2010-06-05 81 views

回答

13

IDataErrorInfo.Error用于报告整个对象的验证状态。

例如,如果您的对象具有属性StartTime和EndTime,您可能希望StartTime小于EndTime,并且如果此验证规则被破坏,则不适合为其中一个或其他属性显示消息。

错误属性也适用于总结对象的整体验证状态。所以答案是否定的 - 你不应该检查每一个属性。与特定属性相关的错误消息通过

string this[string columnName] 

索引器。

编辑:这里是一个link,它解释了接口应该如何使用。

+0

你说什么听起来很合理,但你有什么要支持它吗?似乎使用反射来获取所有要检查的属性会相当昂贵。 – 2010-06-05 17:23:42

+0

您可以查看Microsofts的控件(如DataGrid)如何对实现该界面的数据作出反应。你可以观察它所做的呼叫。如果您仍然不确定,可以查看http://msdn.microsoft.com/en-us/library/system.componentmodel.idataerrorinfo%28VS.95%29.aspx链接以及示例如何使用它。 – Koynov 2010-06-06 20:59:34

+3

答案中的MSDN链接指出:“请注意,绑定引擎从不使用Error属性,尽管您可以在自定义错误报告中使用它来显示对象级错误。”但是我得到一个断点内部的“错误”,它具有BindingExpression.TransferValue在callstack中: - / – 2012-09-22 00:38:32