c# - 是否可以结合使用 ValidationRules 和 INotifyDataErrorInfo 进行 wpf 验证?

标签 c# wpf validation idataerrorinfo inotifydataerrorinfo

在 WPF 中,有 3 种方法可以进行验证:

  • 验证规则
  • IDataErrorInfo
  • INotifyDataErrorInfo

  • 是否可以同时使用这些组合?出于我的需要,我想使用 INotifyDataErrorInfo 的灵 active 来验证新规则,但不想干扰我想要验证的同一对象的现有 ValidationRules。

    最佳答案

    1. 混合不同的错误源

    是的,您可以混合引用您引用的三种验证:

  • ValidationRules适合 GUI(表面)验证
  • IDataErrorInfo在 View 模型/业务对象上实现。适合更多面向业务的验证
  • INotifyDataErrorInfo也在 View 模型/业务对象上实现。它增加了给定字段出现多个错误的可能性,还增加了异步验证(即服务器或线程可能需要时间来响应验证)。

  • 最后一个错误来源确实需要更长的时间来实现

    2. 考虑错误

    最难的是在数据无效时防止窗口关闭时考虑不同的错误来源。

    必须在 GUI 绑定(bind)中查找 ValidationRules 错误,因为无效数据不会到达业务对象/ViewModel。
    IDataErrorInfoINotifiDataErrorInfo可以在 ViewModel 层中查看。

    问候

    关于c# - 是否可以结合使用 ValidationRules 和 INotifyDataErrorInfo 进行 wpf 验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33629531/

    相关文章:

    c# - 从组合框 WPF 中删除组合框项目

    c++ - std::logic_error 而不是返回 false

    c# - 应用程序范围的控制默认值

    c# - 在 Azure 聊天机器人框架中使用聊天机器人响应作为触发词

    c# - 如何判断库代码中是否允许代码访问安全

    c++ - 模板代码的有效性是什么意思?

    ios - 无法验证 iOS 应用程序(已获得有效证书)

    c# - Xamarin - 如何使用 xamarin mac 获取屏幕截图并将其保存在磁盘上?

    c# - WPF,检测您正在离开哪个选项卡

    wpf - DevExpress GridControl 列自动宽度