2010-08-25 5 views
0

У меня есть кнопка, ограниченная значением Validation.HasError текстового блока. Текстовый блок имеет правило проверки, которое проверяет значение, введенное пользователем. Цель привязки заключается в том, что кнопка должна быть отключена, если пользователь вводит неверные данные.Связывание происходит до проверки

Проблема в том, что ValidationRule выполняет ПОСЛЕ привязки. Поэтому, когда пользователь вводит неправильное значение, привязка проверяет свойство HasError текстового блока, что является FALSE, поэтому кнопка включена. И тогда выполняется validationrule. Это приводит к ситуации, когда тексблоки заблокированы, и кнопка включена.

Как я могу указать, какая (привязка и проверка) выполняется в первую очередь?

Вот XAML:

<MultiBinding Converter="{StaticResource ButtonVisibilityConverter}" UpdateSourceTrigger="PropertyChanged" Mode="OneWay" > 
    <Binding ElementName="integerInput" Path="HasValidationError"/> 
    <Binding ElementName="doubleInput" Path="HasValidationError"/> 
    </MultiBinding> 

</Button.IsEnabled> 

Я уверен, что это не так. Элемент управления текстовым блоком, о котором я говорю, представляет собой настраиваемый счетчик (текстовое поле с двумя +/- кнопками). Содержимое счетчика привязано к свойству в viewmodel. Каждый раз, когда мы нажимаем кнопку + или -, выполняется команда и увеличивает или уменьшает значение в текстовом поле.

ответ

1

Какой XAML вы используете, чтобы связать кнопку с текстовым полем? Любое изменение свойства HasError должно инициировать привязку для повторной оценки на кнопке независимо от того, на какой стадии выполняется валидация.

Уверены ли вы, что ваша проблема не в том, что когда свойство HasErrors является ложным, вы хотите, чтобы свойство IsEnabled было истинным, и вы не изменяете значение в привязке?

Смежные вопросы