Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 绑定发生在验证之前_Wpf_Validation_Binding_Button_Textblock - Fatal编程技术网

Wpf 绑定发生在验证之前

Wpf 绑定发生在验证之前,wpf,validation,binding,button,textblock,Wpf,Validation,Binding,Button,Textblock,我在textblock的Validation.HasError属性上有一个按钮。textblock有一个验证规则,用于检查用户输入的值。绑定的目的是,如果用户输入错误的数据,则应禁用该按钮 问题是ValidationRule在绑定之后执行。因此,当用户键入错误的值时,绑定会检查textblock的HasError属性,该属性为FALSE,因此按钮被启用。然后执行validationrule。它会导致相反的情况,即texblock无效且按钮已启用 如何指定首先执行哪个(绑定和验证) 以下是XAML

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

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

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

以下是XAML:


我肯定不是这样的。
我说的textblock控件是一个自定义微调器(带有两个+/-按钮的textbox)。微调器的内容绑定到viewmodel中的属性。每次单击+或-按钮时,将执行一个命令,并递增或递减文本框中的值

您使用什么XAML将按钮绑定到文本框?对HasError属性的任何更改都应该触发绑定,以便在按钮上重新计算,而不管在哪个阶段执行验证

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

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

</Button.IsEnabled>