我想从输入控件中获取任何验证错误。
到目前为止,我有几个视图模型都实现了ValidationViewModel
,它实现了ViewModelBase
和INotifyDataErrorInfo
。
ViewModelBase
实施INotifyPropertyChanged
。看看this link我从哪里得到验证的想法。他和我的验证模型基本相同,但我的分为两部分。
任何属性更改都将按照设计触发propertychanged事件,ValidationViewModel
侦听并执行所有自定义验证。这一切都很好,很好。
这里的问题是只有在属性发生变化时才会进行验证......但是根据这一点,优秀的article绑定引擎执行验证规则并尝试在设置属性之前进行类型转换,不会让我的验证火了。
想象一个文本框绑定到一个整数,用户输入'a'作为示例。然后我留下了红色边框。如何在此控件上捕获任何类型的验证错误?自定义和默认。
我的目标是在我的视图模型中有一个禁用任何类型错误的保存按钮。
答案 0 :(得分:0)
您已从viewmodels中分离了视图。类型转换绑定错误纯粹是在视图方面。
您可以使用Validation.Error
附加路由事件来捕获任何绑定错误,但必须将Binding set中的NotifyOnValidationError设置为true
https://msdn.microsoft.com/en-us/library/system.windows.controls.validation.error(v=vs.110).aspx
发生绑定验证错误时,此事件在可视树中冒泡,因此您可以轻松地捕获整个页面或用户控件
您可以使用Validation.HasError和Validation.Errors附加属性来获取绑定错误。此外,如果您不是
,请熟悉Validation.ErrorTemplate