В чем разница между библиотекой пользовательского управления и пользовательской библиотекой управления?
-
03-07-2019 - |
Вопрос
Я только начинаю осваивать WPF и хотел бы создать многоразовый элемент управления WPF.
Когда я смотрю на варианты создания проектов в Visual Studio, я вижу «Библиотеку пользовательских элементов управления WPF» и «Библиотеку пользовательского управления WPF».Мне неясно, в чем разница между ними, и мои поиски в Google не дали никаких достойных объяснений.
Я хотел бы понять различия между ними и в идеале увидеть несколько примеров того, когда использовать один вместо другого.
Решение
На практике пользовательские элементы управления — это то, что вы реализуете на уровне кода, тогда как для пользовательских элементов управления можно использовать XAML.Пользовательские элементы управления расширяют один из базовых классов элементов управления WPF и предоставляют дополнительные функциональные возможности посредством кода, поэтому вся добавленная логика и представление должны быть реализованы внутри кода.
Пользовательский элемент управления технически представляет собой обычный элемент управления содержимым, который можно расширить в некоторых частях кода, но обычно он расширяется путем размещения внутри него других элементов управления.Итак, как упомянул Кент, UserControl — это совокупность других элементов управления.Это значительно ограничивает возможности пользовательского элемента управления.Его проще использовать, но он более ограничен, чем полный настраиваемый элемент управления.
Эти элементы управления имеют небольшую разницу с точки зрения времени выполнения.При создании приложения и размещении в нем UserControl дерево элементов управления будет содержать конкретный шаблон UserControl внутри него.Итак, если рассматривать убогий пример специализированной кнопки.Если бы вы использовали пользовательский элемент управления, вы бы добавили кнопку внутри <UserControl>
элемент.При использовании пользовательского элемента управления вы, скорее всего, получите сам элемент управления из кнопки.Разница будет видна в логическом дереве.
Хотя пользовательский элемент управления будет обеспечивать логическое дерево, подобное
- Окно
- Пользовательская кнопка
UserControl даст логическое дерево
- Окно
- CustomButtonUserControl
- Кнопка
- CustomButtonUserControl
Таким образом, в конечном итоге UserControl — это обычный ContentControl, который вы можете немного расширить и для которого вы можете заранее определить содержимое.Пользовательский элемент управления обеспечивает большую гибкость за счет простоты реализации, поскольку вам придется выполнять всю логику и взаимодействие в коде вместо использования преимуществ XAML.
Хотя после всего этого я не думаю, что между шаблонами Visual Studio есть такая уж большая разница.Скорее всего, пользовательский элемент управления Visual Studio просто создает проект с пустым пользовательским элементом управления, а проект пользовательского элемента управления — это проект с пустым пользовательским элементом управления.Позже вы сможете добавить в проект любые элементы.
Обновлять
И мое мнение о том, когда использовать пользовательский элемент управления и пользовательский элемент управления, заключается в том, что если вы можете что-то сделать с помощью пользовательского элемента управления и дополнительный элемент управления в логическом дереве вас не беспокоит, используйте пользовательский элемент управления, поскольку их гораздо проще использовать. создавать и поддерживать.Используйте пользовательский элемент управления только в том случае, если у вас есть причина не использовать пользовательский элемент управления.
Другие советы
А Control
представляет некоторое поведение, которое можно использовать в качестве скина (шаблона), тогда как UserControl
как правило, представляет собой совокупность более высокого уровня Control
s, специфичный для приложения.
Доступна дополнительная информация здесь.