昨天,我问了一个关于 MVVM 验证的问题,有人回复了一段代码:https ://stackoverflow.com/a/13387724/
我试图理解这段代码,但我只是不理解索引器部分。有人可以向我解释该代码是如何工作的吗?使用 IDataErrorInfo 时究竟何时调用 get/set,为什么他在 get-part 中返回 this[columnName]?
谢谢
昨天,我问了一个关于 MVVM 验证的问题,有人回复了一段代码:https ://stackoverflow.com/a/13387724/
我试图理解这段代码,但我只是不理解索引器部分。有人可以向我解释该代码是如何工作的吗?使用 IDataErrorInfo 时究竟何时调用 get/set,为什么他在 get-part 中返回 this[columnName]?
谢谢
我写这篇文章时,他的代码有问题。get
如果调用, ter 会抛出 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
声明,属性名称都是 individual case
s。