什么是IDataErrorInfo以及它如何与WPF一起使用?

时间:2009-12-10 20:30:23

标签: .net wpf validation events error-handling

在WPF中处理一些自定义验证器时,我的一位同事向我指出了IDataErrorInfo。我在XAML中有一个示例视图,它有一个文本框和一个按钮。根据文本框中的值,我希望按钮可以启用或禁用。我的同事建议在我的视图的presentor中扩展IDataErrorInfo并为'Item'和'Error'属性编写自定义逻辑将解决我的问题。在我将这个结合到我的代码中之前,我想我应该理解IDataError信息是如何工作的以及实现这个接口提供必要的钩子以触发自定义验证逻辑的原因是什么?对这个概念的一些帮助将非常有帮助!

3 个答案:

答案 0 :(得分:4)

IDataErrorInfo是一个类可以实现的接口,以便通知订阅者特定属性的错误信息,以及类级别的错误。

如果为用作DataContext的类(即:MVVM中的ViewModel)实现此功能,则可以将控件的UpdatesOnValidationError设置为true,并设置自定义模板以在出现错误时以不同方式显示该项。 WPF为您处理管道。

这是short tutorial showing the entire process

答案 1 :(得分:0)

您可能对 WPF Application Framework (WAF) BookLibrary 示例应用感兴趣。它显示了如何在WPF中使用验证以及如何在存在验证错误时控制“保存”按钮。

答案 2 :(得分:0)

如前所述,IDataErrorInfo接口为数据绑定的ViewModel属性提供验证。您可以实现自定义验证规则或利用System.ComponentModel.DataAnnotations中提供的验证属性。

我发现很多关于这个主题的教程都会因为额外的“绒毛”而变得错综复杂,而且他们可能会让那些从WPF开始的人很难掌握这个概念。我直接在refactorthis.net上写了一篇名为WPF Validation tutorial for the rest of us. Learn to use IDataErrorInfo to automatically validate your views.

的点教程