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