8
應該IDataErrorInfo.Error檢查每個屬性?或者我可以信任任何客戶在每個屬性上調用IDataErrorInfo.Item?應該IDataErrorInfo.Error檢查每個屬性?
應該IDataErrorInfo.Error檢查每個屬性?或者我可以信任任何客戶在每個屬性上調用IDataErrorInfo.Item?應該IDataErrorInfo.Error檢查每個屬性?
IDataErrorInfo.Error用於報告整個對象的驗證狀態。
例如,如果您的對象具有屬性StartTime和EndTime,您可能希望StartTime小於EndTime,並且如果此驗證規則被破壞,則不適合爲其中一個或其他屬性顯示消息。
錯誤屬性也適用於總結對象的整體驗證狀態。所以答案是否定的 - 你不應該檢查每一個屬性。與特定屬性相關的錯誤消息通過
string this[string columnName]
索引器。
編輯:這裏是一個link,它解釋了接口應該如何使用。
你說什麼聽起來很合理,但你有什麼要支持它嗎?似乎使用反射來獲取所有要檢查的屬性會相當昂貴。 – 2010-06-05 17:23:42
您可以查看Microsofts的控件(如DataGrid)如何對實現該界面的數據作出反應。你可以觀察它所做的呼叫。如果您仍然不確定,可以查看http://msdn.microsoft.com/en-us/library/system.componentmodel.idataerrorinfo%28VS.95%29.aspx鏈接以及示例如何使用它。 – Koynov 2010-06-06 20:59:34
答案中的MSDN鏈接指出:「請注意,綁定引擎從不使用Error屬性,儘管您可以在自定義錯誤報告中使用它來顯示對象級錯誤。」但是我得到一個斷點內部的「錯誤」,它具有BindingExpression.TransferValue在callstack中: - / – 2012-09-22 00:38:32