Ответ 1
На практике настраиваемые элементы управления - это то, что вы реализуете на уровне кода, в то время как вы можете использовать XAML для пользовательских элементов управления. Пользовательские элементы управления расширяют один из базовых классов управления WPF и предоставляют дополнительные функции через код, поэтому вся добавленная логика и представление должны быть реализованы внутри кода.
Пользовательский элемент управления является стандартным элементом управления контентом, который можно расширить в некоторых частях кода, но обычно он расширяется путем размещения в нем других элементов управления. Так, как отметил Кент, UserControl представляет собой совокупность других элементов управления. Это значительно ограничивает возможности пользовательского управления. Это проще в использовании, но более ограничено, чем полный пользовательский контроль.
Эти элементы управления имеют небольшую разницу с точки зрения времени выполнения. При создании приложения и размещении UserControl в нем дерево управления будет иметь конкретный шаблон UserControl внутри него. Поэтому, если мы рассмотрим хромой пример специализированной кнопки. Если вы использовали пользовательский элемент управления, вы добавили бы кнопку внутри элемента <UserControl>
. При использовании настраиваемого элемента управления вы, скорее всего, вывели бы сам элемент управления с помощью кнопки. Разница будет видна в логическом дереве.
Пока пользовательский элемент управления предоставит логическое дерево, подобное
- Окно
- CustomButton
UserControl даст логическое дерево
- Окно
- CustomButtonUserControl
- Кнопка
- CustomButtonUserControl
Итак, в конечном итоге UserControl - это просто обычный ContentControl, который вы можете продлить бит и для которого вы можете предопределить содержимое. Пользовательский контроль обеспечивает большую гибкость по цене простоты реализации, поскольку вам нужно выполнять всю логику и взаимодействие в коде вместо того, чтобы иметь преимущество XAML.
Хотя после всего этого, я не думаю, что в шаблонах Visual Studio есть большая разница. Скорее всего, пользовательский элемент Visual Studio просто создает проект с пустым настраиваемым элементом управления, а проект User Control - это проект с пустым пользовательским элементом управления. Затем вы можете добавлять в проект любые объекты.
Обновление
И мое мнение о том, когда использовать пользовательский контроль и пользовательский контроль, заключается в том, что если вы можете что-то сделать с помощью пользовательского элемента управления, а дополнительный элемент управления в логическом дереве не беспокоит вас, используйте пользовательский элемент управления так, как он есть гораздо проще создавать и поддерживать. Используйте специальный элемент управления, только если у вас есть причина не использовать пользовательский элемент управления.