Могу ли я написать этот XAML короче? - PullRequest
2 голосов
/ 27 января 2012

Первоначально у меня было окно с большим количеством привязок, как этот:

<TextBox Grid.Row="3" Grid.Column="1" Text="{Binding Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, Path=DatabaseServer}" />

Теперь я должен добавить проверку для каждой привязки, и я заканчиваю:

<TextBox Grid.Row="3" Grid.Column="1" >
    <TextBox.Text>
        <Binding Path="DatabaseServer" Mode="TwoWay" UpdateSourceTrigger="PropertyChanged">
            <Binding.ValidationRules>
                <Utils:NotEmptyStringValidator />
            </Binding.ValidationRules>
        </Binding>
    </TextBox.Text>
</TextBox>

Может ли это быть написано с меньшим количеством текста? Иначе я закончу с трудно поддерживаемым окном.

Ответы [ 2 ]

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

Со страницы Разметка привязки Extesnion s на MSDN:

Ниже приведены свойства привязки, которые нельзя установить с помощью Расширение разметки привязки / форма выражения {Binding}.

ValidationRules: свойство принимает общую коллекцию Объекты ValidationRule. Это может быть выражено как элемент свойства в элементе привязки объекта, но не имеет легкодоступного метод парсинга атрибутов для использования в выражении Binding. Увидеть ссылка на ValidationRules.

Итак, нет, более краткой разметки нет.

Если вы не хотите написать собственное расширение разметки?

0 голосов
/ 27 января 2012

Вы можете пропустить Mode="TwoWay", потому что это по умолчанию в WPF.В противном случае, нет способа написать это более кратко, когда вы используете ValidationRules декларативно, как это.

Если вас беспокоит, что XAML станет трудно читать из-за количества, которое у вас есть, большинство контрактов (т. е. каждый открывающий узел) должен иметь небольшой символ +/- на полях, который можно использовать, чтобы развернуть и свернуть блок кода.

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