在TextBlock的数据验证中获取用户控件或可视树

时间:2009-05-07 11:57:59

标签: c# .net wpf validation xaml

我在文本块的text属性上设置了验证器。为了正确验证,我需要textblock的父usercontrol,但我在验证器中唯一的东西是值对象(字符串)和文化(也没有帮助)。

有没有人知道在类/方法中获取某些用户控件的方法,我无法访问任何类型的可视化或控制我的应用程序。

如果我可以给验证器提供usercontrol或textblock作为参数,问题可以解决,但我找不到办法这样做..

1 个答案:

答案 0 :(得分:1)

您可以尝试使用Binding类中内置的两个验证属性进行验证:ValidatesOnExceptionsValidatesOnDataErrors

使用ValidatesOnExceptions,如果在转换过程中抛出异常,则绑定无效。在这种情况下,您可以创建自定义转换器,将用户控件作为参数传递,然后如果绑定无效,则在转换器中抛出异常。

<Binding ValidatesOnExceptions="True"/>

对于ValidatesOnDataErrors,如果源实现IDataErrorInfo并且为IDataErrorInfo.Error属性返回非空/空字符串,则绑定无效。如果您的源代码确实或可以实现此接口,则可以在源端验证数据。

<Binding ValidatesOnDataErrors="True"/>