我在视图中的ValidationRule
上使用了TextBox
,ValidationRule
正常运行。
但是,当我处于Command
的canExecute方法(在本例中为Button
)返回true(Button
已启用)时,会出现问题,然后用户更改TextBox
的内容,以便ValidationRule
返回false 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>
答案 0 :(得分:0)
在做了一些更多研究之后,该解决方案似乎正在我的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
属性。