【问题标题】:IDataErrorInfo - how does it workIDataErrorInfo - 它是如何工作的
【发布时间】:2012-11-03 21:04:54
【问题描述】:

昨天,我问了一个关于 MVVM 验证的问题,有人回复了一段代码:https://stackoverflow.com/a/13387724/

我试图理解这段代码,但我只是不理解索引器部分。有人可以向我解释该代码是如何工作的吗?使用 IDataErrorInfo 时究竟何时调用 get/set,为什么他在 get-part 中返回 this[columnName]?

谢谢

【问题讨论】:

    标签: c# wpf mvvm


    【解决方案1】:

    我写这篇文章时,他的代码有问题。如果被调用,getter 会抛出 StackOverflowException。

    当绑定配置为执行验证时

    <TextBox Text="{Binding Hurr, ValidatesOnDataErrors=true}" />
    

    如果数据源对象实现IDataErrorInfo,绑定系统将使用该接口的两种方法进行验证。

    接口的索引器接受一个字符串,该字符串是要验证的属性的名称,并返回一个字符串,该字符串是该属性当前值的验证错误(如果有)。

    这方面的一个例子可能是......

    var pet = new Pet();
    var error = pet["Name"]; //"Your pet has no name!"
    pet.Name = "Fido";
    error = pet["Name"]; //"Come on, how unoriginal is that?"
    

    他的特定代码示例是在奇怪的 getter/setter 中处理验证。这不是如何实现IDataErrorInfo 的普遍示例,但更可能是通过他自己的个人风格从他自己的个人代码中剪下。大多数人都有自己的实现方式,但 9/10 次它会是 switch 声明,属性名称都是单独的 cases。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-09-26
      • 2011-03-18
      • 2015-06-16
      • 2012-08-31
      • 2012-07-13
      • 2012-05-27
      • 1970-01-01
      相关资源
      最近更新 更多