作为一个新的 WPF 程序员,我找不到两种不同的验证用户输入的方法之间的区别:
编写自定义验证规则以实现 IDataErrorInfo 的优缺点是什么,反之亦然?我什么时候应该更喜欢其中一个?
更新:
虽然我已经得到了答案,但我找到了可能对其他人有帮助的相关文章。
作为一个新的 WPF 程序员,我找不到两种不同的验证用户输入的方法之间的区别:
编写自定义验证规则以实现 IDataErrorInfo 的优缺点是什么,反之亦然?我什么时候应该更喜欢其中一个?
更新:
虽然我已经得到了答案,但我找到了可能对其他人有帮助的相关文章。
基本上,如果您实施IDataErrorInfo
,则在绑定对象中实施验证,而如果您实施验证规则,则在附加到绑定的对象中实施验证。
就个人而言,如果您使用的是 MVVM,我认为您必须疯了才能使用除IDataErrorInfo
. 您希望验证存在于视图模型中。如果它在您的视图模型中,它是集中的并且是可测试的。如果它在您的视图中,那么您的验证逻辑可能是错误的或缺失的,找到它的唯一方法是手动测试您的视图。这是可避免的错误的巨大潜在来源。
在某些地方使用验证规则是有意义的——例如,如果您正在围绕哑对象(XmlDataSource
例如 )构建 UI。但对于大多数生产应用程序,我不会靠近它。
IDataErrorInfo
验证规则
我的观点是,对于像必填字段验证、电子邮件地址验证等常见验证,您可以使用验证规则。如果您需要进行自定义验证,例如范围验证,或者任何自定义验证,请使用 IDataerrorinfo。
您实现 IDataErrorInfo 以便能够将数据绑定与 eas 一起使用。您仍然构建您的自定义验证规则。