原文:WPF - Visual调试工具Snoop

  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="" ></GridSplitter>                                        <DockPanel Name="listRegion">                                         </DockPanel>                                         <DockPanel Name="detailRegion" Grid.Column="">                                        </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/ ]

WPF - Visual调试工具Snoop的更多相关文章

  1. WPF应用无法使用Snoop分析的解决办法

    如果WPF程序是以管理员身份启动的,Snoop不是用管理员身份启动,那就不行. 用管理员身份启动snoop,就可以了. 管理员身份启动cmd,然后启动snoop,ok.

  2. 关闭VS2015的WPF UI调试工具

    VS菜单: 工具 > 选项 > 调试 > 常规 > 启用Xaml 的UI调试工具.把勾勾去掉.

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

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

  4. 2000条你应知的WPF小姿势 基础篇<45-50 Visual Tree&Logic Tree 附带两个小工具>

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

  5. windows forms 上一个类似于wpf snoop 的工具: Hawkeye

    windows forms 上一个类似于wpf snoop 的工具: Hawkeye 周银辉 WPF上有snoop这样的run time object editor让人用着很爽, 今天搜到了一个for ...

  6. WPF Tutorial - Using A Visual Collection

    While WPF and XAML make the common 90% of UI programming quite easy, sometimes it gets a little odd ...

  7. WPF 资源收集

    转载地址:http://www.cnblogs.com/zhoujg/archive/2009/11/04/1596195.html OpenExpressApp的UI现在是使用WPF,所以熟悉WPF ...

  8. 20 Interesting WPF Projects on CodePlex

    20 Interesting WPF Projects on CodePlex (Some for Silverlight too) Pete Brown - 22 November 2010   I ...

  9. Visual Studio的Debugger Visualizers

    在英文网站上找到一份清单,列出了Visual Studio的Debugger Visualizers,觉得很好,记下来备注并分享: ASP, WEB:ASP.NET control graph vis ...

随机推荐

  1. Lua Development Tools (LDT)

    http://www.eclipse.org/ldt/ Lua Development Tools (LDT) is about providing Lua developers with an ID ...

  2. sql取整函数

    SQL取整运算2009年04一个月02日本 星期四 10:01有使用说明这种方法记录,就在今天,那么当仍然被遗忘.事实上通常用四舍五入的操作有几种情况,一个是简单的四舍五入,无论是小数点后面的是什么都 ...

  3. Oracle 重建索引脚本

    该指数是一个有力的武器,以提高数据库的查询性能. 没有索引,喜欢同样的标签库没有书籍,找书,他们想预订比登天还难.中,尤其是在批量的DML的情形下会产生对应的碎片.以及B树高度会发生对应变化.因此能够 ...

  4. Tomcat通过配置一个虚拟路径管理web工程

    关于虚拟路径.学问javaweb训练课程,如今,鉴于这种情况下老师. 当我们的项目,当在不同的文件夹项目.我们如何使用tomcat去管理web工程. 教师提出的解决方案是 使用虚拟路径方式,并按照实施 ...

  5. 《javascript高级编程》读书笔记(两)javascript基本概念

    第三章:基本概念 ECMAScript那里5种简单数据类型(也称基本数据类型):Undefined\Null\Boolean\Number\String,另一种复杂数据类型--Object,Objec ...

  6. 正则、grep、sed、awk

    每次用到正则都要蛋疼一下,索性总结一下在这里. 正则 正則表達式主要分为基础正则和扩展正则.注意,正则和一般命令行输入的命令的通配符不同.正则仅仅使用于支持这样的表示法的工具,如:vi,grep,se ...

  7. LNK快捷方式漏洞利用方式 exp制作教程

    前言windows的shell32在处理控制面板程序的快捷方式文件时,存在一个漏洞,能够载入硬盘上的随意DLL文件,就可以运行随意代码. 漏洞文件的生成到“控制面板”以下,右键点“显示”,点“创建快捷 ...

  8. Android开发技巧——实现在图标文本底部导航栏(更新)

    本文参考了导航栏的代码viewpagerindicator实现. 本文介绍了之前版本号qq或者微信,添加文本,实现图标,导航栏的底部. 2014-09-14 13:59:42更新:library的代码 ...

  9. JavaScript语言基础知识7

    JavaScript该阵列是一个新概念. 我们可以使用newkeyword和Array()构造函数来解释 排列: <HTML> <HEAD> <TITLE>Hell ...

  10. CSS截取字符串,额外的文本显示以省略号

    最近的诀窍css还有这么叼炸天的侧~~~ 善待似论坛页面,头像70px,但username不限啊,English中国能够.你说如果他采取"我的名字是这么长啊.你该怎么办呢".那老和 ...