新闻详情

新闻详情

首页 / 资讯中心 / 详情

三步给 WPF UI 表单加上实时校验:INotifyDataErrorInfo 快速上手

发布时间:2026/9/18 20:06:32来源:尧图网络
三步给 WPF UI 表单加上实时校验:INotifyDataErrorInfo 快速上手
三步给 WPF UI 表单加上实时校验INotifyDataErrorInfo 快速上手【免费下载链接】wpfuiWPF UI provides the Fluent experience in your known and loved WPF framework. Intuitive design, themes, navigation and new immersive controls. All natively and effortlessly.项目地址: https://gitcode.com/GitHub_Trending/wp/wpfui用户在 WPF UI 表单里填完一栏资料点提交才在弹窗里看到三条错误挤在一起来回改得没脾气。用 INotifyDataErrorInfo 做 WPF UI 数据验证可以让错误直接标在出问题的输入框上哪个字段不对提示就出现在哪个字段旁边。一、老方案为什么不够用ValidationRule 把校验逻辑写进 XAML规则散落在标记里换个控件就得再抄一遍而且它只回答值通不通过很难把多条错误信息递回界面。IDataErrorInfo 好一点但一个属性只能吐出一条错误字段同时违反两条规则时后一条直接丢。二、INotifyDataErrorInfo 帮你解决了什么INotifyDataErrorInfo 是 WPF 内置的数据错误通知接口——对你来说它就是让控件能逐个字段弹出错误提示的那个开关。它给你三样东西多条错误聚合一个属性可以同时挂着不能为空和格式不对两条提示控件会把它们一起显示出来。异步校验校验逻辑可以放进后台任务比如发请求查一下名字有没有被占用UI 不会被卡住。属性级通知ErrorsChanged事件带着属性名发出WPF 只刷新相关控件不用整页重绘。三、跟着做最小可跑示例 以 samples/Wpf.Ui.Demo.Mvvm/ 工程为底最省事它已经引好了 CommunityToolkit.Mvvm。按三步走建 ViewModel让页面 ViewModel 继承ObservableObject并实现INotifyDataErrorInfo错误存进一个Dictionarystring, Liststring。加校验方法在属性变化的钩子里跑规则有错就写进字典再触发一次ErrorsChanged。绑控件把ValidatesOnNotifyDataErrors开起来输入框就会自己显示错误。ViewModel 片段省略了 using 和Validate方法体方法体就是清旧错误 → 写新错误 → 发事件public partial class ProfileViewModel : ObservableObject, INotifyDataErrorInfo { private readonly Dictionarystring, Liststring _errors new(); public event EventHandlerDataErrorsChangedEventArgs? ErrorsChanged; public bool HasErrors _errors.Count 0; [ObservableProperty] private string _userName ; partial void OnUserNameChanged(string v) Validate(nameof(UserName)); public IEnumerable GetErrors(string? p) p is null ? _errors.Values.SelectMany(e e) : _errors.GetValueOrDefault(p, Array.Emptystring()); }XAML 里一个输入框就能跑通 WPF 表单校验TextBlock Text用户名 / ui:TextBox Text{Binding UserName, UpdateSourceTriggerPropertyChanged, ValidatesOnNotifyDataErrorsTrue} PlaceholderText至少 3 个字符 Margin0,4,0,0 /UpdateSourceTriggerPropertyChanged保证每敲一个字符就回到 ViewModel出错时输入框外会自动套上 WPF 默认的红框错误模板。四、最容易踩的两个坑 ⚠️坑一只加错误忘了发事件。你把错误塞进字典但ErrorsChanged没发出去界面纹丝不动看起来像校验没生效。每次改动字典后补一行ErrorsChanged?.Invoke(this, new DataErrorsChangedEventArgs(nameof(UserName)));坑二异步回调跑错线程。await回来之后你在后台线程改_errors并触发事件WPF 绑定只认 UI 线程轻则不刷新重则抛异常。把校验调用包回 UI 线程await Application.Current.Dispatcher.InvokeAsync(() Validate(nameof(UserName)));五、跑通之后还能玩什么异步唯一性校验在OnUserNameChanged里发请求查名字有没有被占用返回时可用才清错误——这是 MVVM 验证里最有价值的一步。Snackbar 汇总提示点提交时若HasErrors为真用 WPF UI 的 Snackbar 把错误一次性弹在角落不阻塞操作。规则抽成验证特性[MinLength(3)]、[Email]这类自定义特性多个页面的 WPF UI ViewModel 校验能直接复用同一套规则。校验逻辑回到 ViewModel界面只负责显示这套结构往后的维护成本低很多。MVVM 示例工程samples/Wpf.Ui.Demo.Mvvm/自带输入校验的 NumberBox 控件src/Wpf.Ui/Controls/NumberBox/入门文档docs/documentation/getting-started.md【免费下载链接】wpfuiWPF UI provides the Fluent experience in your known and loved WPF framework. Intuitive design, themes, navigation and new immersive controls. All natively and effortlessly.项目地址: https://gitcode.com/GitHub_Trending/wp/wpfui创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

FSDB波形调试指南:从dump命令到大型仿真优化 2026/9/18 20:45:38

FSDB波形调试指南:从dump命令到大型仿真优化

有一年我在等一个全芯片回归,跑了四个多小时,临门一脚断言挂了。我满怀信心打开几十个GB的VCD波形准备定位,结果Verdi直接卡到白屏,索引读了快三分钟,拉信号的时候鼠标都飘。最后实在没办法,找同事要了份FS…

阅读更多 →
ARM边缘设备实战:香橙派AIpro与D435i跑ORB-SLAM3避坑指南 2026/9/18 20:45:38

ARM边缘设备实战:香橙派AIpro与D435i跑ORB-SLAM3避坑指南

1. 项目缘起与整体方案选型1.1 为什么要在ARM边缘设备上跑SLAM视觉SLAM(Simultaneous Localization and Mapping,即时定位与建图)在机器人、无人机、AR/VR领域已经不算新鲜事,但真正把它从x86工控机搬到ARM边缘计算板上&#xff0…

阅读更多 →
FPGA TDC延迟链优化与码密度校准方法详解 2026/9/18 20:45:38

FPGA TDC延迟链优化与码密度校准方法详解

1. 从一次“测不准”的崩溃说起:TDC延迟链到底难在哪做时间数字转换(Time-to-Digital Converter,TDC)这行的朋友,大概都有过类似的经历:辛辛苦苦在FPGA里搭好了一条延迟链,综合、布局布线、上板…

阅读更多 →
分布式置换流水车间调度全解析:建模、遗传算法与Python实现 2026/9/18 20:45:38

分布式置换流水车间调度全解析:建模、遗传算法与Python实现

简介:面向智能制造与运筹优化领域研究者的一份PDF文献,聚焦多工厂、多机器、多作业环境下的分布式置换流水车间调度(DPFSP)建模与求解。内容系统阐述了DPFSP的问题特征、数学模型与优化准则,并归纳了遗传算法、蚁群算法…

阅读更多 →
单传感器3D超声成像:编码孔径与压缩感知重建技术解析 2026/9/18 20:45:38

单传感器3D超声成像:编码孔径与压缩感知重建技术解析

简介:基于《Compressive 3D ultrasound imaging using a single sensor》论文,面向超声成像领域研究人员与具备编程基础的医学影像工程技术人员,资源完整呈现仅用单个传感器实现压缩3D超声成像的设计与复现思路,旨在缓解传统阵列传…

阅读更多 →
跨语言情感分析技术解析与商业应用 2026/9/18 20:42:37

跨语言情感分析技术解析与商业应用

1. 跨语言情感分析技术的商业价值解析在全球化商业环境中,企业需要处理来自不同语言市场的客户反馈、社交媒体评论和产品评价。传统单语言情感分析已无法满足跨国企业的需求,能够同时处理多种语言的深度学习模型正成为企业竞争力的重要指标。我曾参与过多…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞