Когда следует создавать подкласс Control и когда следует создавать подкласс Panel?

#.net #wpf #silverlight #windows-phone-7 #controls

#.net #wpf #silverlight #windows-phone-7 #элементы управления

Вопрос:

В WPF (или silverlight) Когда следует создавать подкласс Control и когда следует создавать подкласс Panel?

Каковы подходящие сценарии для каждого из них?

Комментарии:

1. Первоначальная мысль: получить более настраиваемую панель или элемент управления.

2. Мой ответ на ваш последний пост объясняет это.

3. @ lukas : Спасибо, я это видел. Я опубликовал это, чтобы упростить вопрос. Последний вариант получился немного чересчур сложным.

Ответ №1:

Я использую пользовательские элементы управления, когда у меня есть жесткая структура — это означает, что я могу разместить именно то, что я хочу в Xaml, даже если я мог бы скинуть элемент управления, используя несколько определений Xaml, которые выглядят совершенно по-разному. Примером может служить элемент управления электронной таблицей, который я написал. Одно определение Xaml имеет определенный набор цветов и расположение меню и кнопок, другое полностью отличается. Я всегда знаю, что я выкладываю, когда использую пользовательский элемент управления.

Я использую пользовательские панели, когда у меня более динамичное расположение, где мне нужно переопределить MeasureOverride и ArrangeOverride, а они часто виртуальные, что означает, что я создаю экземпляры только того, что видно. Примером пользовательской панели является та, которую я написал, которая отображает сотни изображений. Вы можете изменить макет (например, стопку страниц, по 2 рядом друг с другом, или выложенных плиткой, чтобы поместилось как можно больше) и уровень масштабирования. Я читаю и отображаю только те изображения, которые видны на пользовательской панели, и для их просмотра есть полоса прокрутки.

Большинство стандартных панелей, таких как Grid, StackPanel и т.д., Являются пользовательскими панелями, созданными Microsoft. Это должно дать вам представление о том, для чего используются пользовательские панели — для упорядочивания неизвестного количества дочерних элементов по определенному шаблону. Пользовательские элементы управления, с другой стороны, предназначены для разработки определенного пользовательского интерфейса, обычно такого, который можно создать с помощью стилей Xaml.

Ответ №2:

Одно из соображений заключается в том, что обычно пользовательский элемент управления создается в WPF / Silverlight только тогда, когда требуется новое поведение. Если все, что вы хотите изменить, это внешний вид, обычно это возможно с помощью стилей, шаблонов элементов управления, …