[英]How to call CanExecute when validation cancels UpdateSourceTrigger
我在视图中的TextBox
上使用ValidationRule
,并且ValidationRule
正常工作。
但是,当我处在Command
的canExecute方法(在这种情况下为Button
)的canExecute方法返回true(启用Button
)的状态下,然后用户更改TextBox
的内容,因此ValidationRule
返回一个状态时,就会出现问题。错误的ValidationResult
。 这导致绑定到Button.Text
的ViewModel属性未更新,这意味着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>
经过更多研究后,解决方案似乎是在ViewModel上实现IDataErrorInfo
接口。 然后,我可以通过bound属性完全访问TextBox
的当前内容。
这是新的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
属性。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.