Я только начинаю работать над WPF и хотел бы создать элемент управления WPF многократного использования.
Когда я смотрю на варианты создания проектов в Visual Studio, я вижу «Библиотека управления пользователями WPF» и «Библиотека пользовательских элементов управления WPF». Мне неясно, в чем разница между ними, и мои поиски в Google не дали никаких приличных объяснений.
Я хотел бы понять различия между ними и в идеале увидеть примеры того, когда использовать один над другим.
wpf
user-controls
custom-controls
17 из 26
источник
источник
Ответы:
На практике пользовательские элементы управления - это то, что вы реализуете на уровне кода, в то время как вы можете использовать XAML для пользовательских элементов управления. Пользовательские элементы управления расширяют один из базовых классов элементов управления WPF и предоставляют дополнительную функциональность посредством кода, поэтому вся добавленная логика и представление должны быть реализованы внутри кода.
Пользовательский элемент управления технически является обычным элементом управления контентом, который вы можете расширить в некоторых частях кода, но обычно он расширяется путем помещения в него других элементов управления. Так, как упомянул Кент, UserControl - это совокупность других элементов управления. Это значительно ограничивает возможности пользователя. Это проще в использовании, но более ограничено, чем полный пользовательский контроль.
Эти элементы управления имеют небольшую разницу с точки зрения времени выполнения. При создании приложения и размещении в нем элемента UserControl в дереве элементов управления будет содержаться конкретный шаблон UserControl. Так что, если мы рассмотрим неудачный пример специализированной кнопки. Если бы вы использовали пользовательский элемент управления, вы бы добавили кнопку внутри
<UserControl>
элемента. При использовании пользовательского элемента управления вы, скорее всего, получите сам элемент управления из кнопки. Разница будет видна в логическом дереве.В то время как пользовательский элемент управления будет обеспечивать логическое дерево, подобное
UserControl даст логическое дерево
Таким образом, в итоге UserControl - это просто обычный ContentControl, который вы можете немного расширить и для которого вы можете предварительно определить контент. Пользовательский контроль обеспечивает большую гибкость за счет простоты реализации, поскольку вам приходится выполнять всю логику и взаимодействие в коде, а не использовать преимущества XAML.
Хотя после всего этого я не думаю, что есть большая разница в шаблонах Visual Studio. Скорее всего, пользовательский элемент управления Visual Studio просто создает проект с пустым пользовательским элементом управления, в то время как проект пользовательского элемента управления является проектом с пустым пользовательским элементом управления. Позже вы можете добавить любые элементы в проект.
Обновить
И мое мнение о том, когда использовать пользовательский элемент управления и пользовательский элемент управления, заключается в том, что если вы можете что-то сделать с помощью пользовательского элемента управления, а дополнительный элемент управления в логическом дереве вас не беспокоит, используйте пользовательский элемент управления, поскольку их намного проще создавать и поддерживать. Используйте пользовательский элемент управления, только если у вас есть причина не использовать пользовательский элемент управления.
источник
A
Control
представляет некоторое поведение, которое можно скинуть (временно), тогда как a, какUserControl
правило, представляет собой агрегацию более высокого уровняControl
s, специфичную для приложения.Более подробная информация доступна здесь .
источник