2010-06-05 26 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