Когда вы должны извлечь UserControl в WPF - PullRequest
5 голосов
/ 22 декабря 2009

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

<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>

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

Ответы [ 2 ]

3 голосов
/ 22 декабря 2009

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

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

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

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

2 голосов
/ 22 декабря 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...