c# – IDataErrorInfo – 它是如何工作的

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

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

谢谢

最佳答案 我写这篇文章时他的代码很麻烦.如果调用,getter将抛出StackOverflowException.

将Binding配置为执行验证时

<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语句,属性名称都是个别情况.

点赞