使用 VS 开发 WPF 程序时过滤警告级别的 Xaml 绑定失败信息
一、问题描述
相信做 WPF 开发的朋友,对于在调试模式下的程序顶部浮动的这个工具条并不陌生,其中有一个 Xaml 绑定失败 指示器是我们的好帮手:

记得 VS2019 之前的版本并不带这个功能,需要自己安装相关插件,后来的版本则是官方集成了这个功能。通过这个功能,我们能在开发时就发现可能存在的绑定失败的情况,而且点击进去能看到具体的失败信息,这对我们帮助很大。当然,这个功能还不能说尽善尽美,比如有的时候确认了没有它提示的绑定失败的情况,但它就是提示了(有可能是生命周期前期确实有绑定失败,后来消失了,没有刷新检测);还比如,通常情况你通过绑定失败信息导航不到具体的地方,还得自己分析是哪里导致的错误。
我们今天说的则是另外一种情况,就是这边的都是警告级别的(黄色三角形图标,而不是错误级别的红色圆形图标)。这有什么问题呢?因为这个绑定失败我已经确认了实际上并不会对程序功能有什么影响,但是因为是在按钮基本样式中进行的绑定,所以数量比较多(前一张图显示的 99+),这就形成了一种垃圾信息的场景,不利于真正重要信息的发现,如果有强迫症就更受不了了:

接下来简单分析一下问题的成因(结合上下两张图),首先这是在按钮的样式中,在 ToolTip 上绑定了按钮 Command 的 Privilege 属性;在实际运行中,自定义命令类型 XxxCommand 中有这个属性,一切正常;问题在于,程序中还用了 DelegateCommand、RelayCommand 等类型,在这些命令类型中没有这个属性,所以导致了报警告:

在设计时就更明显了,它是当作 ICommand 类型来检测的,所以直接就波浪线警告了:

二、解决方法
以 VS2022 为例,在 工具 — 选项 — 调试 — 输出窗口 界面,WPF 跟踪设置 — 数据绑定 一项,原先的选项设置为了 警告 级别,我们只需要改为 错误 级别即可:

设置后如下图所示:

确认后再次调试运行程序,可以看到已经没有任何警告信息了:

好了,今天的分享就到这里了。
三、题外话:WPF 知识库分享
最后说个题外话,给大家分享一个 ima 知识库 ——
【ima 知识库】WPF 知识和解决方案 https://ima.qq.com/wiki/?shareId=da401edcca1a350cf5354e6bc82a6618bc2003ba8ff3f7c3960717ec28d31fa7
里面有很多 WPF 相关学习文章,愿我们共同学习,让 WPF 再次伟大!


发表评论