绑定发生在验证之前

时间:2010-08-25 11:25:09

标签: wpf validation binding button textblock

我在文本块的Validation.HasError属性上有一个按钮。文本块具有验证规则,用于检查用户输入的值。绑定的目的是,如果用户输入了错误的数据,则应禁用该按钮。

问题是ValidationRule在绑定后执行。因此,当用户键入错误的值时,绑定会检查textblock的HasError属性,该值为FALSE,因此按钮为Enabled。然后执行validationrule。它会导致相反的情况,即texblock无效并且按钮已启用。

我如何指定首先执行哪个(绑定和验证)?

这是XAML:     

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

</Button.IsEnabled>

我确定事实并非如此。 我正在谈论的文本块控件是一个自定义微调器(带有两个+/-按钮的文本框)。微调器的内容绑定到viewmodel中的属性。每次我们点击+或 - 按钮时,都会执行一个命令并递增或递减文本框中的值。

1 个答案:

答案 0 :(得分:1)

您使用什么XAML将按钮绑定到文本框?对HasError属性的任何更改都应触发绑定以在按钮上重新评估,无论在何处执行验证。

您确定问题不是当HasErrors属性为false时,您希望IsEnabled属性为true并且您没有反转绑定中的值吗?