Привязка происходит до проверки - PullRequest
0 голосов
/ 25 августа 2010

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

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

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

Вот XAML:

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

</Button.IsEnabled>

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

1 Ответ

1 голос
/ 25 августа 2010

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

Вы уверены, что ваша проблема не в том, что когда свойство HasErrors имеет значение false, вы хотитеСвойство IsEnabled имеет значение true, и вы не меняете значение в привязке?

...