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

ET.*_*ET. 9 validation wpf idataerrorinfo

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

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

更新:

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

Rob*_*ney 20

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

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

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

  • 使用ValidationRule的一个潜在好处是,在ViewModel更改为不正确的值之前,您可以检查值的正确性. (3认同)
  • 我认为ValidationRules仅适用于您不使用MVVM的情况.如果使用ValidationRule来防止在视图中输入的数据进入视图模型,则视图模型不再对视图建模.很难理解所有这些东西而不会让它变得更不透明. (3认同)
  • 但ValidationRule似乎是自定义错误消息的唯一方法 (2认同)