作为一名新的WPF程序员,我找不到验证用户输入的两种不同方式之间的区别:
编写自定义验证规则与实现IDataErrorInfo相比有什么优缺点?我应该在何时选择其中之一?
更新:
虽然我已经得到了答案,但我发现这篇相关文章可能会对其他人有所帮助。
编写自定义验证规则与实现IDataErrorInfo相比有什么优缺点?我应该在何时选择其中之一?
更新:
虽然我已经得到了答案,但我发现这篇相关文章可能会对其他人有所帮助。
基本上,如果实现了 IDataErrorInfo
接口,验证将在绑定的对象中实现;而如果实现了验证规则,则验证将在绑定的对象所附加的对象中实现。
个人而言,如果你正在使用 MVVM 模式,我认为你必须疯了才会使用除了 IDataErrorInfo
以外的其他任何东西。你希望验证逻辑居于视图模型之中,这样它就是集中且可测试的。如果它被放在视图中,那么你的验证逻辑可能错漏百出,而要找到问题的唯一方法就是手动测试你的视图。这是一个可避免的严重错误来源。
有些情况下,使用验证规则是有意义的 - 例如,如果你正在围绕着“哑”对象(例如,XmlDataSource
)构建 UI。但对于大多数生产应用程序,我不会接近它。
IDataErrorInfo
验证规则
我的观点是,对于常见的验证,如必填字段验证、电子邮件地址验证,您可以使用验证规则。如果您需要进行自定义验证,例如范围验证或其他自定义验证,请使用IDataerrorinfo。
您可以实现IDataErrorInfo接口,以便能够轻松使用数据绑定。但是您仍然需要构建自定义的验证规则。