Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF get HasError来自源属性的绑定_C#_Wpf_Validation_Binding - Fatal编程技术网

C# WPF get HasError来自源属性的绑定

C# WPF get HasError来自源属性的绑定,c#,wpf,validation,binding,C#,Wpf,Validation,Binding,给定一个具有直接绑定和验证的文本框: <TextBox Content="{Binding ProblematicText}" ValidationRule="..."> 在代码中,我必须使用属性'ProblematicText'的值,除非TextBox的ValidationRule中有错误 如何从代码中访问BindingExpression.HasError或简单地实现这一点?视图模型不知道,当然也不应该知道视图中可能定义的任何验证规则。因此,如果ProblematicText是

给定一个具有直接绑定和验证的文本框:

<TextBox Content="{Binding ProblematicText}" ValidationRule="...">
在代码中,我必须使用属性'ProblematicText'的值,除非TextBox的ValidationRule中有错误


如何从代码中访问BindingExpression.HasError或简单地实现这一点?

视图模型不知道,当然也不应该知道视图中可能定义的任何验证规则。因此,如果ProblematicText是在视图模型中定义的,则应该在此类中执行验证

摆脱验证规则,在视图模型中实现INotifyDataErrorInfo接口。下面是一些应该给出想法的链接

WPF 4.5:使用INotifyDataErrorInfo接口验证中的数据:


ps:我显然没有办法使用BindingOperations.GetBindingExpressiondependencyObject,dependencyProperty;因为这些是“未知的”。我用这种方式访问各种属性。我在XAML视图中绑定属性,但在C ViewModel中,我不知道哪个属性后面有哪个gui元素。您应该在视图模型中处理验证逻辑。看看我的答案。
public string ProblematicText
{
    // ...
}