WPF中的验证 - 自定义验证规则或IDataErrorInfo

时间:2010-12-05 13:15:34

标签: wpf validation idataerrorinfo

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

编写自定义验证规则以实现IDataErrorInfo的优缺点是什么,反之亦然?我何时比较喜欢一个?

更新

虽然我已经得到了答案,但我发现related article可以帮助其他人。

3 个答案:

答案 0 :(得分:20)

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

就个人而言,如果你正在使用MVVM,我认为除了IDataErrorInfo之外,你必须疯狂地使用任何东西。您希望验证生活在视图模型中。如果它在您的视图模型中,它是集中的,并且它是可测试的。如果它在您的视图中,那么您的验证逻辑可能是错误的或丢失的,找到它的唯一方法是手动测试您的视图。这是可避免的错误的巨大潜在来源。

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

答案 1 :(得分:1)

<强> IDataErrorInfo的

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

验证规则

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

我的意见是,对于必要的字段验证,电子邮件地址验证等常见验证,您可以使用验证规则。如果您需要进行范围验证等自定义验证,或使用IDataerrorinfo进行自定义验证。

答案 2 :(得分:-1)

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