Как создать правило проверки WPF, чтобы два текстовых поля имели одинаковое значение? - PullRequest
1 голос
/ 09 октября 2009

Как мне создать правило проверки, чтобы Value2 имел то же значение, что и Value1? Если правило проверки не лучший метод, то что будет лучше? Я мог бы обработать событие TextChanged, но мне интересно, есть ли что-то более элегантное.

<TextBox Name="Value1TextBox">
    <TextBox.Text>
        <BindingPath Path="Value1" UpdateSourceTrigger="PropertyChanged" />
    </TextBox.Text>
</TextBox>

<TextBox Name="Value2TextBox">
    <TextBox.Text>
        <BindingPath Path="Value2" UpdateSourceTrigger="PropertyChanged" />
    </TextBox.Text>
</TextBox>

Ответы [ 2 ]

3 голосов
/ 09 октября 2009

Правила проверки не слишком удобны, если вам нужно объединить несколько значений для проверки. Если у вас есть доступ к связанному типу данных, тогда реализация IDataErrorInfo будет намного проще, и вам нужно будет только включить проверку вашей привязки с ValidateOnDataError = True. Если нет, вам нужно будет поработать над параметризацией вашего ValidationRule: Либо использовать этот обходной путь Виртуальный паттерн Джоша Смита или некоторый прокси-сервер связывания, как описано здесь (кстати, очень хороший помощник) Связующий прокси Дугласа Стоквелла

С одним из них вам нужно сделать одну привязку параметром для вашего правила проверки при проверке другой.

2 голосов
/ 09 октября 2009

Похоже, реализация интерфейса System.ComponentModel.IDataErrorInfo и добавление ValidatesOnDataErrors сделали свое дело.

<TextBox Name="Value2TextBox">    
    <TextBox.Text>        
        <BindingPath Path="Value2" UpdateSourceTrigger="PropertyChanged" ValidatesOnDataErrors="True" />
    </TextBox.Text>
</TextBox>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...