Snoop
一、介绍
Snoop是一个开源的WPF程序探测工具,可以监视和浏览正在运行的WPF程序的可视化和逻辑等,可以更改属性值,查看触发器,在属性更改时设置断点。很小巧,支持选择运行的WPF程序进程或者直接拖动到WPF程序上面。如下图
二、使用
选择对象监视进程后,点击右数第4个望远镜形状的按钮,进行探测。
左边部分是可视树,可以查看对应窗体的资源字典和控件组成结构。右边是各种需要查看的事务,和VS很相似。如图展开后,显示了各种引用的资源,最好用的一点是,展开可视化树,鼠标悬停到相应控件时,会有该控件的缩略图,帮助我们快读定位到指定控件。
与此同时,对应的WPF程序也会有不同的样式来响应该定位操作。例如下图所示,会在该控件周围形成一个粉红色的边框样式,该样式并不是我代码写的,而是表明该区域正在被Snoop聚焦。
右上角部分显示各种控件属性,和VS很像,控件的Properties会有详细的记录,对于我们调试样式,查看控件样式继承有重要作用。重要的是可以查看命令绑定和命令参数,对于开发MVVM程序有很大的帮助。如下图所示:
DataContext是控件的绑定的对象,在这里查看对象各种属性值,如我这个ListBox里面的内容模板里面的Button,对应的绑定对象是GlobalOrderGoods,也可以在这里改变对象属性值,如我将商品名为西瓜测试改为西1瓜测试,会立即生效:
源程序这里因为绑定模式采用的单次绑定,所以页面没有刷新,如果不是单次,源程序会立马体现出来:
右下角是诊断的相关信息,这里会给出一些建议或者提示绑定错误等内容。
如下图所示,警告信息IsDisplayJin绑定一次可能导致内存泄漏。还有各种画刷提高性能的建议和可维护性建议,可根据实际情况合理采纳诊断建议。