INotifyDataErrorInfo 支持异步、多错误实时验证,适合复杂场景;IDataErrorInfo 仅同步单错误,适用于简单表单。

在WPF中实现数据验证,IDataErrorInfo 和 INotifyDataErrorInfo 是两种主流接口,它们都支持绑定层自动高亮错误、显示提示,但适用场景和能力有明显区别。
这是最轻量、兼容性最好的方式,适合简单表单、单字段即时校验(如非空、长度、格式)。它只提供“拉取式”错误信息——控件失去焦点或触发 Binding 更新时才调用,不主动通知变化。
IDataErrorInfo 接口,必须提供 this[string columnName] 索引器和 string Error { get; } 属性(后者通常不用)Binding Path=Name, ValidatesOnDataErrors=True, NotifyOnValidationError=True
Validation.ErrorTemplate,配合 TextBox 的 Style 可自定义红框/提示图标这是 WPF 4.5+ 推荐的现代方式,支持多错误、实时通知、异步校验(如用户名是否已存在),适合复杂业务场景。
本书是全面讲述PHP与MySQL的经典之作,书中不但全面介绍了两种技术的核心特性,还讲解了如何高效地结合这两种技术构建健壮的数据驱动的应用程序。本书涵盖了两种技术新版本中出现的最新特性,书中大量实际的示例和深入的分析均来自于作者在这方面多年的专业经验,可用于解决开发者在实际中所面临的各种挑战。
466
INotifyDataErrorInfo 接口,关键成员包括:bool HasErrors、IEnumerable GetErrors(string propertyName)、event EventHandler<dataerrorschangedeventargs></dataerrorschangedeventargs>
Dictionary<string list>></string> 管理,每个属性可存多个错误消息ErrorsChanged 事件(例如:ErrorsChanged?.Invoke(this, new DataErrorsChangedEventArgs("Email")))Binding Path=Email, ValidatesOnNotifyDataErrors=True, NotifyOnValidationError=True
ErrorsChanged 并传入 null 或空字符串多数项目推荐优先用 INotifyDataErrorInfo,尤其涉及服务端校验、多规则共存或 MVVM 框架(如 Prism、CommunityToolkit.Mvvm)集成时更自然。若需兼容 .NET Framework 4.0 或极简需求,IDataErrorInfo 仍可靠。
GetErrors 或索引器里做耗时操作(如网络请求),应提前完成并缓存结果INotifyPropertyChanged 使用:属性变更 → 触发校验 → 更新错误集合 → 触发 ErrorsChanged
Validation.HasError 触发样式切换,或绑定 (Validation.Errors)[0].ErrorContent 显示第一条提示基本上就这些。选哪个不取决于“高级与否”,而看是否需要实时响应、多错误叠加、异步支持——想清楚验证节奏和交互预期,接口就很容易落地。
以上就是C# 如何在WPF中实现数据验证 - IDataErrorInfo与INotifyDataErrorInfo的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号