从WPF控件获取任何类型的验证错误

时间:2015-05-15 18:01:19

标签: c# wpf validation xaml

我想从输入控件中获取任何验证错误。

到目前为止,我有几个视图模型都实现了ValidationViewModel,它实现了ViewModelBaseINotifyDataErrorInfoViewModelBase实施INotifyPropertyChanged。看看this link我从哪里得到验证的想法。他和我的验证模型基本相同,但我的分为两部分。

任何属性更改都将按照设计触发propertychanged事件,ValidationViewModel侦听并执行所有自定义验证。这一切都很好,很好。

这里的问题是只有在属性发生变化时才会进行验证......但是根据这一点,优秀的article绑定引擎执行验证规则并尝试在设置属性之前进行类型转换,不会让我的验证火了。

想象一个文本框绑定到一个整数,用户输入'a'作为示例。然后我留下了红色边框。如何在此控件上捕获任何类型的验证错误?自定义和默认。

我的目标是在我的视图模型中有一个禁用任何类型错误的保存按钮。

1 个答案:

答案 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