【问题标题】:Should IDataErrorInfo.Error check every property?IDataErrorInfo.Error 是否应该检查每个属性?
【发布时间】:2010-06-05 04:28:58
【问题描述】:

IDataErrorInfo.Error 是否应该检查每个属性?或者我可以信任任何客户在每个属性上调用 IDataErrorInfo.Item 吗?

【问题讨论】:

    标签: .net wpf silverlight


    【解决方案1】:

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

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

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

    公开
    string this[string columnName]
    

    索引器。

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

    【讨论】:

    • 你说的听起来很有道理,但你有什么可以支持的吗?似乎使用反射来检查所有属性会相当昂贵。
    • 您可以查看 Microsoft 的控件(如 DataGrid)如何对实现接口的数据作出反应。您可以观察它发出的调用。如果您仍然不相信,您可以查看msdn.microsoft.com/en-us/library/… 该链接及其使用示例。
    • 答案中的 MSDN 链接显示“请注意,绑定引擎从不使用 Error 属性,尽管您可以在自定义错误报告中使用它来显示对象级错误。”但是我在调​​用堆栈中有 BindingExpression.TransferValue 的“错误”内遇到断点:-/
    猜你喜欢
    • 1970-01-01
    • 2012-05-06
    • 1970-01-01
    • 2021-12-21
    • 1970-01-01
    • 2012-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多