Когда должен Вы извлекать UserControl в WPF

На нашей работе у нас есть продолжение противоречия, где некоторые люди хотят создать пользовательские элементы управления, которые комбинируют часто используемые средства управления как маркировка и текстовое поле, или маркировка и управление изображением. Таким образом, что-то вроде этого:

<StackPanel Orientation="Horizontal">
    <Image Source="/Someimage/Somewhere.gif"/>
    <Label>Some text, hyperlink, or other content</Label>
</StackPanel>

и используйте его как это

<ImageLabel
    HeaderImageSource="/Someimage/Somewhere.gif"
>
    Some text, hyperlink, or other content
</ImageLabel>

Вопрос состоит в том, если они обеспечивают достаточно инкапсуляции и абстракции для заслуживания управления отдельного пользователя?

5
задан cplotts 22 December 2009 в 19:54
поделиться

2 ответа

Да, на мой взгляд, этого достаточно для создания отдельного пользовательского элемента управления - если они формируют логический компонент в вашем контексте. В проекте, над которым я работаю, мы действительно создаем пользовательские элементы управления, если у нас есть сгруппированные компоненты, которые мы хотим использовать повторно. Основным преимуществом является то, что вы получаете контроль над структурой и стилем компонента. Рассмотрим случай, когда вы хотите где-то внести изменения. Например, добавить рамку вокруг изображения или добавить какой-нибудь стиль в свой лейбл. Вы не захотите просматривать код, чтобы найти все совпадения повторяющейся группы компонентов. Вместо этого - вы бы хотели обновить только это место - а именно в пользовательском компоненте, который вы отделили.

Еще одно преимущество - если вы хотите привязать компоненты к одному и тому же объекту. Тогда вы можете привязать ваш ImageLabel к объекту вместо этого, и ваши компоненты могут быть привязаны непосредственно к свойствам внутри этого объекта красивым и чистым способом. Замечание: Я предполагаю, что вы на самом деле хотите повторно использовать этот компонент и хотите, чтобы он был структурирован и стилизован одинаковым образом во всем вашем приложении. Я бы никогда не создал такого простого пользовательского элемента управления для использования только один раз.

3
ответ дан 14 December 2019 в 19:15
поделиться

Кажется немного переборщил с созданием UserControl для трех элементов управления; я бы подумал, сэкономит ли это мне время и усилия, а не инкапсуляция/абстракция

.
2
ответ дан 14 December 2019 в 19:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: