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

StackOverflow https://stackoverflow.com/questions/807703

Вопрос

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

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

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

Это было полезно?

Решение

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

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

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

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

  • Окно
    • Пользовательская кнопка

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

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

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

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

Обновлять

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

Другие советы

А Control представляет некоторое поведение, которое можно использовать в качестве скина (шаблона), тогда как UserControl как правило, представляет собой совокупность более высокого уровня Controls, специфичный для приложения.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top