Snoop经过很长一段时间,最近更新到支持NET 3.5了,它是一个WPF运行时对Visual UI调试的一个工具,最近我用过它调试修改过一个bug,在此介绍给大家。Snoop可以在 Installer下载安装,它的代码也是公布的,可以在Download Source下载,感兴趣的也可以看看,我现在还没有看:)

运行Snoop

下载安装后,运行Snoop.exe后出现一个类似工具条的界面:

下拉框中显示的运行的WPF应用程序,如果还么有打开需要调试的程序,可以打开后再点击【刷新】按钮获取应用程序列表,选中应用程序后,点击Snoop图标()可以打开Snoop。

左边是可视化树列表,选中可视化元素后,右边中间显示该元素的属性,右边下面是元素的UI预览界面。

当选中元素后,目标应用程序的响应元素会高亮显示在一个红色边框内。

选中元素可以直接在列表中选择,也可以按住Ctrl-Shift后移动鼠标到目标应用程序的选择元素上。

界面面板介绍

可视元素列表(Visual Tree View)

  1. 当出现性能问题时可以查看一下子元素的数量,尽量使得子元素数量达到最小。
  2. 通过过滤文本框右边下拉控件可以查找错误的绑定。(在调试OpenExpressApp过程中,snoop会出现一些bug,而使得OEA程序关闭,原因不明)

属性面板(Property Grid)

我更新过属性值,但是好像没有反映到目标应用程序中去。

事件视图(RoutedEvents View)

            

预览窗口(Preview Area )

选择元素的预览界面,这个由于性能原因默认是关闭的,不过我每次都是打开它,因为可以立刻看到效果:)

放大视图(Zoom View)/3D Zoom View

      

调试实例

  在开发OpenExpressApp时,发现了一个比较UI上的bug,我就是借助Snoop进行调试解决的,以下是我遇到的问题。

问题:

在模块中,点击Grid中间区域会出现一列长条

解决:

  1. 因为看上去有点像splitter控件,所以以为splitter位置出现问题,我把ListDetailForm.xaml列表和明细之间使用ResizingPanel代替Grid,也不是splitter了

    Code
      <AvalonDock:DocumentContent Title="内容">
                                    <DockPanel>
                                        <Grid>
                                            <Grid.ColumnDefinitions>
                                                <ColumnDefinition Width="3*"/>
                                                <ColumnDefinition Width="7*"/>
                                            </Grid.ColumnDefinitions>
                                            <GridSplitter Width="5" ></GridSplitter>
                                            <DockPanel Name="listRegion">
                                             </DockPanel>
                                             <DockPanel Name="detailRegion" Grid.Column="1">
                                            </DockPanel>
                                         </Grid>
                                    </DockPanel>
                                 </AvalonDock:DocumentContent>
    Code
      <AvalonDock:ResizingPanel>
                                        <DockPanel Name="listRegion" AvalonDock:ResizingPanel.ResizeWidth="3*">
                                        </DockPanel>
                                        <DockPanel Name="detailRegion" AvalonDock:ResizingPanel.ResizeWidth="7*">
                                        </DockPanel>
                                    </AvalonDock:ResizingPanel> 
  2. 发现问题依旧,这时就不知道是什么原因了,从样子看出来还会是什么东东。这时正好snoop发布了,就用了一把。打开snoop看到这个竖条原来是CSLA中的BusyAnimation。我在Grid中间放置了一个显示busy状态的控件,终于找到罪魁祸首了,原来是这个东东在捣乱。
    找到原因后就很好解决了,把BusyAnimation的VisibilityProperty绑定一下就可以解决了

    Code
                //绑定IsVisible
                Binding bdIsVisible = new Binding("IsBusy");
                bdIsVisible.Source = DataProvider;
                bdIsVisible.Converter = new BooleanToVisibilityConverter();
                bdIsVisible.BindsDirectlyToSource = true;
                busy.SetBinding(BusyAnimation.VisibilityProperty, bdIsVisible);

欢迎转载,转载请注明:转载自周金根 [ http://zhoujg.cnblogs.com/ ]

转载于:https://www.cnblogs.com/zhoujg/archive/2009/11/20/1606357.html

WPF - Visual调试工具Snoop相关推荐

  1. WPF,防止snoop窥探你的程序

    面对懂C++魔法的大佬无效[狗头] 此代码用于将snoop窥探到你程序的窗体关闭掉,对方如果把snoop的名称或者窗体名称修改则无效 真正阻止snoop之类的程序进行窥探应该保护你程序进程的内存,而不 ...

  2. WPF - Group分组对ListBox等列表样式的约束

    原文:WPF - Group分组对ListBox等列表样式的约束 在做WPF主题支持时,出现一个分组引起的莫名错误,可是折腾了我一番.在没有使用样式时,列表分组很正常,使用了别人写的ListBox列表 ...

  3. 2000条你应知的WPF小姿势 基础篇45-50 Visual TreeLogic Tree 附带两个小工具

    在正文开始之前需要介绍一个人:Sean Sexton. 来自明尼苏达双城的软件工程师.最为出色的是他维护了两个博客:2,000Things You Should Know About C#  和 2, ...

  4. WPF - 资源收集

    OpenExpressApp的UI现在是使用WPF,所以熟悉WPF是必须的,以下我将可能用到的一些相关内容随时记录下来,以备查阅.此篇文章将不断更新,感兴趣的可以看看,也欢迎大家补充. Debuggi ...

  5. 【.Net开发】之WPF入门介绍

    前言: 以下内容翻译自微软官方文档. 链接:https://docs.microsoft.com/zh-cn/dotnet/desktop-wpf/overview/ 什么是WPF(Windows P ...

  6. UWP 和 WPF 对比

    原文: UWP 和 WPF 对比 本文告诉大家 UWP 和 WPF 的不同. 如果在遇到技术选择或者想和小伙伴吹的时候可以让他以为自己很厉害,那么请继续看. 如果在看这文章还不知道什么是 UWP 和 ...

  7. WPF 使用 Composition API 做高性能渲染

    在 WPF 中很多小伙伴都会遇到渲染性能的问题,虽然 WPF 的渲染可以甩浏览器渲染几条街,但是还是支持不了游戏级的渲染.在 WPF 使用的 DX 只是优化等级为 9 和 DX 9 差不多的性能,微软 ...

  8. 基于Visual C 2010开发Windows7应用 多点触摸图片处理应用程序 1 同时处理多张图片

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! wind ...

  9. 基于Visual C#2010开发Windows7应用 多点触摸图片处理应用程序(1)-同时处理多张图片...

    windows7的触摸功能开辟了一个电脑的全新世纪.从此,您可以丢掉鼠标和键盘,直接用手在屏幕上玩游戏.用笔来写字编辑文档,聊天. windows7最重要特性之一就是:支持多点触摸.比尔盖茨说,不久, ...

  10. 【转】UWP 和 WPF 对比

    本文告诉大家 UWP 和 WPF 的不同. 如果在遇到技术选择或者想和小伙伴吹的时候可以让他以为自己很厉害,那么请继续看. 如果在看这文章还不知道什么是 UWP 和 WPF 那么也没关系,下面会告诉大 ...

最新文章

  1. H - Parity game-poj1733(需要离散化)
  2. 文件服务器安全,文件服务器安全
  3. 域名反向解析在自建邮件群发服务器中的应用
  4. js读取服务器txt文件,ZK中使用JS读取客户端txt文件内容问题
  5. 网页编程从入门到精通 杨凡_干货 | web前端入门基础知识
  6. 【渝粤题库】国家开放大学2021春2402外国文学题目
  7. 清华大学迎来外籍院长!
  8. vb与数据库(二)之迟到的学生信息管理系统总结
  9. 机器学习—XGBoost常见问题解析
  10. 阿里前 vs 来阿里后,阿里人的真实写照!
  11. html5晋级之路-学习笔记表单
  12. ip申请 web应用_阿里云同时部署DDoS高防IP+CDN+WAF
  13. 对华为HG526无线猫做一下补充说明
  14. 乔姆斯基生成语法_乔姆斯基的转换生成语法理论
  15. Linux下关于snmp的snmpwalk命令
  16. VB生成二维码图形的控件,CSDN利用盗版卖卖会员44积分赚钱
  17. DNS服务器故障纠错
  18. VSCode 自动检查代码出错Vetur
  19. SQL84 实习广场投递简历分析(一)
  20. 电商用户行为数据分析

热门文章

  1. 文档型数据库MongoDB使用教程
  2. python中文分词器(jieba类库)
  3. 密码学的数学基础2-同余
  4. 点击劫持(clickjacking)
  5. linux的木马检测
  6. mipi的dsi全称_mipi协议里面csi和dsi是什么意思
  7. xbox360 FSD 安装游戏教程(Freestyle3)
  8. python代码写龙卷风_python – 带有龙卷风的ZODB
  9. 一万年太久,只争朝夕_散文网
  10. vim实用技巧总结 [Linux]