给定具有直接绑定和验证的TextBox:
<TextBox Content="{Binding ProblematicText}" ValidationRule="...">
和我的DataContext中的source属性:
public string ProblematicText
{
// ...
}
在代码中,我必须使用属性'ProblematicText'的值,除非TextBox在其ValidationRule中有错误。
如何从代码中访问BindingExpression.HasError
或实现此目的?
视图模型不知道(并且当然也不应该)视图中可能定义的任何验证规则。因此,如果在视图模型中定义了ProblematicText
,则应在此类中执行验证。
摆脱验证规则并在视图模型中实现INotifyDataErrorInfo
接口。以下是一些应该提供这个想法的链接。
WPF 4.5:使用INotifyDataErrorInfo接口验证数据:https://social.technet.microsoft.com/wiki/contents/articles/19490.wpf-4-5-validating-data-in-using-the-inotifydataerrorinfo-interface.aspx