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

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

Когда я смотрю на варианты создания проектов в Visual Studio, я вижу "WPF User Control Library" и "WPF Custom Control Library". Мне непонятно, в чем разница между ними и моими поисками Google, не принесли никаких достойных объяснений.

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

Ответ 1

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

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

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

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

  • Окно
    • CustomButton

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

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

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

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

Обновление

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

Ответ 2

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

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