9

作为一个新的 WPF 程序员,我找不到两种不同的验证用户输入的方法之间的区别:

编写自定义验证规则以实现 IDataErrorInfo 的优缺点是什么,反之亦然?我什么时候应该更喜欢其中一个?

更新:

虽然我已经得到了答案,但我找到了可能对其他人有帮助的相关文章。

4

3 回答 3

21

基本上,如果您实施IDataErrorInfo,则在绑定对象中实施验证,而如果您实施验证规则,则在附加到绑定的对象中实施验证。

就个人而言,如果您使用的是 MVVM,我认为您必须疯了才能使用除IDataErrorInfo. 您希望验证存在于视图模型中。如果它在您的视图模型中,它是集中的并且是可测试的。如果它在您的视图中,那么您的验证逻辑可能是错误的或缺失的,找到它的唯一方法是手动测试您的视图。这是可避免的错误的巨大潜在来源。

在某些地方使用验证规则是有意义的——例如,如果您正在围绕哑对象(XmlDataSource例如 )构建 UI。但对于大多数生产应用程序,我不会靠近它。

于 2010-12-05T23:50:31.340 回答
1

IDataErrorInfo

  • 验证逻辑保留在视图模型中,易于实现和维护
  • 完全控制视图模型中的所有字段

验证规则

  • 在单独的类中维护验证规则
  • 增加可重用性。例如,您可以实现所需的字段验证类在整个应用程序中重用它。

我的观点是,对于像必填字段验证、电子邮件地址验证等常见验证,您可以使用验证规则。如果您需要进行自定义验证,例如范围验证,或者任何自定义验证,请使用 IDataerrorinfo。

于 2013-09-30T03:45:13.343 回答
-1

您实现 IDataErrorInfo 以便能够将数据绑定与 eas 一起使用。您仍然构建您的自定义验证规则。

于 2010-12-05T13:22:57.943 回答