В чем разница между библиотекой пользовательских элементов управления и библиотекой пользовательских элементов управления? - PullRequest
153 голосов
/ 30 апреля 2009

Я только начинаю работать над WPF и хотел бы создать повторно используемый элемент управления WPF.

Когда я смотрю на параметры для создания проектов в Visual Studio, я вижу «Библиотека пользовательских элементов управления WPF» и «Библиотека пользовательских элементов управления WPF». Мне неясно, в чем разница между ними, и мои поиски в Google не дали никаких приличных объяснений.

Я бы хотел понять различия между ними и в идеале увидеть некоторые примеры использования одного над другим.

Ответы [ 2 ]

109 голосов
/ 30 апреля 2009

На практике пользовательские элементы управления - это то, что вы реализуете на уровне кода, в то время как вы можете использовать XAML для пользовательских элементов управления. Пользовательские элементы управления расширяют один из базовых классов элементов управления WPF и обеспечивают дополнительную функциональность посредством кода, поэтому вся добавленная логика и представление должны быть реализованы внутри кода.

Пользовательский элемент управления технически является обычным элементом управления контентом, который вы можете расширить в некоторых частях кода, но обычно он расширяется путем помещения в него других элементов управления. Так, как упомянул Кент, UserControl - это совокупность других элементов управления. Это значительно ограничивает возможности пользователя. Это проще в использовании, но более ограничено, чем полный пользовательский элемент управления.

Эти элементы управления имеют небольшое отличие с точки зрения времени выполнения. При создании приложения и размещении в нем элемента UserControl дерево элементов управления будет иметь конкретный шаблон UserControl. Так что, если мы рассмотрим неудачный пример специализированной кнопки. Если бы вы использовали пользовательский элемент управления, вы бы добавили кнопку внутри элемента <UserControl>. При использовании пользовательского элемента управления вы, скорее всего, получите сам элемент управления из кнопки. Разница будет видна в логическом дереве.

В то время как пользовательский элемент управления будет предоставлять логическое дерево, подобное

  • Окно
    • CustomButton

UserControl выдаст логическое дерево

  • Окно
    • CustomButtonUserControl
      • Кнопка

Таким образом, в итоге UserControl - это просто обычный ContentControl, который вы можете немного расширить и для которого вы можете заранее определить контент. Пользовательский элемент управления обеспечивает большую гибкость за счет простоты реализации, поскольку вам приходится выполнять всю логику и взаимодействие в коде, а не использовать преимущества XAML.

Хотя после всего этого я не думаю, что есть большая разница в шаблонах Visual Studio. Скорее всего, пользовательский элемент управления Visual Studio просто создает проект с пустым пользовательским элементом управления, в то время как проект пользовательского элемента управления является проектом с пустым пользовательским элементом управления. Позже вы можете добавлять любые элементы в проект.

Обновление

И мое мнение о том, когда использовать пользовательский элемент управления и пользовательский элемент управления, заключается в том, что если вы можете что-то сделать с помощью пользовательского элемента управления, а дополнительный элемент управления в логическом дереве вас не беспокоит, используйте пользовательский элемент управления, поскольку они Гораздо проще создавать и поддерживать. Используйте пользовательский элемент управления только в том случае, если у вас есть причина не использовать пользовательский элемент управления.

23 голосов
/ 30 апреля 2009

A Control представляет некоторое поведение, которое поддерживает скины (временные), тогда как UserControl обычно представляет собой агрегацию более высокого уровня Control s, специфичную для приложения.

Более подробная информация доступна здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...