Когда должен быть создан подкласс Control и когда должен быть создан подкласс Panel? - PullRequest
2 голосов
/ 09 июня 2011

В WPF (или silverlight) Когда должен быть создан подкласс Control и когда должен быть создан подкласс Panel?

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

Ответы [ 2 ]

3 голосов
/ 09 июня 2011

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

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

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

2 голосов
/ 09 июня 2011

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

...