Предотвращение написания большого количества дублирующегося кода в XAML - PullRequest
2 голосов
/ 26 января 2012

У меня есть XAML:

<TextBlock Text="Param 1 name" Margin="6,6,0,0"></TextBlock>
<TextBox Text="{Binding Param1Value, UpdateSourceTrigger=PropertyChanged}" Margin="6,6,0,0"></TextBox>

<TextBlock Text="Param 2 name" Margin="6,6,0,0"></TextBlock>
<TextBox Text="{Binding Param2Value, UpdateSourceTrigger=PropertyChanged}" Margin="6,6,0,0"></TextBox>

...

<TextBlock Text="Param N name" Margin="6,6,0,0"></TextBlock>
<TextBox Text="{Binding ParamNValue, UpdateSourceTrigger=PropertyChanged}" Margin="6,6,0,0"></TextBox>

Как можно оптимизировать этот код для предотвращения копирования-вставки?Control, Style, ContentControl или DataTemplate?

Я могу использовать Style для повторного использования полей, но как можно повторно использовать структуру этих пар TexBlock и TextBox?

Ответы [ 2 ]

4 голосов
/ 26 января 2012

Создайте UserControl с двумя свойствами (например, заголовок и текст) и привяжите TextBlock к заголовку, а TextBox к свойству Text.

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

UserControl против Custom / Templated Control (прочитайте всю ветку для максимальной выгоды):

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

2 голосов
/ 26 января 2012

Может быть, вам стоит попробовать ItemsControl Class и установить его DataTemplate.

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