Ответ 1
UserControl
- A
UserControl
намного проще создавать с помощью Visual Studio или Blend, предоставляя вам достойную поддержку проектных представлений. - Обычно вы используете его для создания представления в своем приложении из нескольких элементов управления.
- Он лучше всего подходит для полноэкранного или полного окна, или если у вас есть сложные виды, которые вы хотите разбить на более мелкие, возможно многократно используемые фрагменты кода.
-
Такое представление часто поддерживается соответствующей моделью представления, если вы решите принять шаблон MVVM.
-
Одна из проблем с
UserControl
заключается в том, что, хотя вы можете повторно использовать ее в нескольких местах в своем приложении, сложно внести небольшие изменения в способ, которым она выглядит или ведет себя в разных местах вашего приложения, поскольку она не работает 't использовать шаблоны, а дерево пользовательского интерфейса загружается в конструктор. - Обычно он может использоваться только в пределах одного приложения.
Пользовательский контроль
- A
custom control
или в некоторых случаяхtemplated control
лучше всего подходит для небольшого фрагмента пользовательского интерфейса, который служит одной цели - он визуализирует единый определенный тип информации. - Шаблонный элемент управления может изменить свой шаблон, чтобы настроить визуальные эффекты для конкретного варианта использования. Это позволяет вам иметь кнопку, которая выглядит как кнопка по умолчанию в одном приложении, округленная одна в другой, и одна сделана исключительно из изображений в другой. Это делает его более многоразовым, что имеет смысл, если вы делаете несколько приложений или хотите поделиться своим удивительным контролем с миром.
- Хорошо написанный пользовательский элемент управления обычно можно использовать повторно в нескольких приложениях, поскольку он не зависит от бизнес-логики конкретного приложения.
- Обычно это происходит из существующего управления платформой, например
Button
,ToggleButton
,ContentControl
,Slider
,TextBox
илиListView
для добавления или переопределения его логики. Есть случаи, когда имеет смысл сделать это с нуля, подклассифицируя "фактически абстрактные"Control
,ItemsControl
,RangeBase
,Shape
или дажеFrameworkElement
(последние два не являются шаблонами). - Визуальное дерево шаблонного элемента управления загружается при загрузке шаблона, который может возникать до тех пор, пока видимость элемента управления сначала изменяется с
Collapsed
наVisible
, что позволяет отложить загрузку частей вашего пользовательского интерфейса, чтобы получить производительность улучшения. - Поскольку шаблон управления загружается только один раз, они идеально подходят для использования внутри любого элемента ItemsControl DataTemplate (списки, gridviews и т.д.). Если вы будете использовать UserControl, ваша производительность может действительно пострадать, потому что UserControl XAML анализируется снова и снова.
Пользовательская панель
A custom panel
- еще один тип элемента пользовательского интерфейса, который позволяет настроить, как он определяет его дочерние элементы.