我在文本块的text属性上设置了验证器。为了正确验证,我需要textblock的父usercontrol,但我在验证器中唯一的东西是值对象(字符串)和文化(也没有帮助)。
有没有人知道在类/方法中获取某些用户控件的方法,我无法访问任何类型的可视化或控制我的应用程序。
如果我可以给验证器提供usercontrol或textblock作为参数,问题可以解决,但我找不到办法这样做..
答案 0 :(得分:1)
您可以尝试使用Binding
类中内置的两个验证属性进行验证:ValidatesOnExceptions
和ValidatesOnDataErrors
。
使用ValidatesOnExceptions
,如果在转换过程中抛出异常,则绑定无效。在这种情况下,您可以创建自定义转换器,将用户控件作为参数传递,然后如果绑定无效,则在转换器中抛出异常。
<Binding ValidatesOnExceptions="True"/>
对于ValidatesOnDataErrors
,如果源实现IDataErrorInfo
并且为IDataErrorInfo.Error
属性返回非空/空字符串,则绑定无效。如果您的源代码确实或可以实现此接口,则可以在源端验证数据。
<Binding ValidatesOnDataErrors="True"/>