我在文本块的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中的属性。每次我们点击+或 - 按钮时,都会执行一个命令并递增或递减文本框中的值。
答案 0 :(得分:1)
您使用什么XAML将按钮绑定到文本框?对HasError属性的任何更改都应触发绑定以在按钮上重新评估,无论在何处执行验证。
您确定问题不是当HasErrors属性为false时,您希望IsEnabled属性为true并且您没有反转绑定中的值吗?