我正在使用 ValidationRule
在 TextBox
在我看来,ValidationRule
工作正常。
但是,当我处于 Command
的 canExecute 方法的状态时,就会出现问题。 (在 Button
上,在这种情况下)返回 true(Button
已启用),然后用户更改 TextBox
的内容所以ValidationRule
返回错误 ValidationResult
.这导致 ViewModel 属性绑定(bind)到 Button.Text
没有被更新,这意味着 canExecute 方法仍然认为结果是好的并返回 true。
那么 - 尽管 ValidationResult
是错误的,我如何才能更新有问题的 ViewModel 属性?还是有另一种方法来做这一切?
编辑:这是我的 TextBox
的 XAML :
<TextBox HorizontalAlignment="Left" Margin="67,50,0,0" VerticalAlignment="Top" Width="27">
<TextBox.Text>
<Binding Path="MachineNo" Mode="TwoWay" UpdateSourceTrigger="PropertyChanged">
<Binding.ValidationRules>
<local:MachineNoValidate/>
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
</TextBox>
最佳答案
在进行了更多研究之后,该解决方案似乎正在实现 IDataErrorInfo
我的 ViewModel 上的界面。然后我可以完全访问 TextBox
的当前内容通过绑定(bind)属性。
这是新的 XAML:
<TextBox HorizontalAlignment="Left" Margin="67,50,0,0" VerticalAlignment="Top" Width="27"
Text="{Binding MachineNo, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged,
ValidatesOnDataErrors=True}"/>
仅限
this[]
需要实现; WPF 不使用 Error
属性(property)。
关于c# - 验证取消 UpdateSourceTrigger 时如何调用 CanExecute,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34927858/