关于Snoop的用法

 
snoop是开发wpf应用程序的利器。用它可以观察WPF的可视树,监听事件,更改元素属性等。

 
下面我介绍下snoop一些用法。
 
1.获取指定应用程序的UI
 
  打开snoop,选择“Drag and Drop this crosshairs over wpf window inorder to snoop it” 按钮, 拖动它到你要观察的wpf窗体上。
 
  你会发现 十字准线 会标出窗体的名字及进程号。
 
2.选择窗体后,snoop会创建一个包含此窗体可视树的一个界面。
 
  此UI左边是窗体的可视树,右边是每个可视元素的属性,DataContext(数据上下午), 发生的Events,以及保护的公共方法。
 
3.在Snoop创建出来的可视树找到自己想要观察的元素, 有2种办法:
 
(1)根据元素层次关系, 层层展开,找到对应元素。
(2)在被观察的窗体上, 按住快捷键shift+ctrl, 然后用鼠标左键直接选择对应元素。
 
 
4.Properties选项卡的用法
 
  此页显示了左边选中的可视元素的属性。 通过Properties可以看到运行时的属性值( 比如Width,Height,以及此属性值如果Binding则其BindingPath)
  大部分控件的属性是可更改的, 则我们可以在Properties中更改某些属性值, 来实时看到被观察窗体上的UI变化。 (比如,我们更改元素的Visibility,可以        实时看到元素的隐藏或显示;更改高宽来实时查看变化等等) 这样对于调试很方便,当我们通过snoop确定效果时,再在代码中更改。
 
5.Data Context选项卡的用法
 
 此页显示了左边选中的可视元素的DataContext(数据上下文) , 通过此功能看到运行时我们Binding的值是否正确。
 
6.Events选项卡的用法
 
 此页显示了被观察窗体所发生的路由事件。通过此功能我们可以查看用户操作时的Routed Event是否按照我们想象的方式正确运行。
 点击Common Events下拉框, 可以选择想要监视的event类型。
 
7.Methods选项卡的用法
 
 此页可以动态调用左边被选中元素所公开的函数方法, 或者元素的DataContext所公开的方法。 通过此方法我们可以调试一些方法调用后对于UI的影响。
 
8.右下角Preview区域的用法
 
 snoop右下角可以对被观察窗体进行放大, 实时预览,以及截图保存。尤其是Preview功能,对应实时调试样式效果很有用。打开实时预览功能后, 我们可以在预览区域进行拖动,放大缩小等操作,能尽可能最大化的看到效果。
 
9.状态栏
 
 snoop的状态栏显示了当前focus的元素, 对于我们调试wpf的焦点问题也很有用法,配合Events监视情况会更好。
 

snoop的基本用法的更多相关文章

  1. 关于Snoop的用法

    snoop是开发wpf应用程序的利器.用它可以观察WPF的可视树,监听事件,更改元素属性等. 下面我介绍下snoop一些用法. 1.获取指定应用程序的UI   打开snoop,选择"Drag ...

  2. EditText 基本用法

    title: EditText 基本用法 tags: EditText,编辑框,输入框 --- EditText介绍: EditText 在开发中也是经常用到的控件,也是一个比较必要的组件,可以说它是 ...

  3. jquery插件的用法之cookie 插件

    一.使用cookie 插件 插件官方网站下载地址:http://plugins.jquery.com/cookie/ cookie 插件的用法比较简单,直接粘贴下面代码示例: //生成一个cookie ...

  4. Java中的Socket的用法

                                   Java中的Socket的用法 Java中的Socket分为普通的Socket和NioSocket. 普通Socket的用法 Java中的 ...

  5. [转载]C#中MessageBox.Show用法以及VB.NET中MsgBox用法

    一.C#中MessageBox.Show用法 MessageBox.Show (String) 显示具有指定文本的消息框. 由 .NET Compact Framework 支持. MessageBo ...

  6. python enumerate 用法

    A new built-in function, enumerate() , will make certain loops a bit clearer. enumerate(thing) , whe ...

  7. [转载]Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法总结

    本文对Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法进行了详细的总结,需要的朋友可以参考下,希望对大家有所帮助. 详细解读Jquery各Ajax函数: ...

  8. 【JavaScript】innerHTML、innerText和outerHTML的用法区别

    用法: <div id="test">   <span style="color:red">test1</span> tes ...

  9. chattr用法

    [root@localhost tmp]# umask 0022 一.chattr用法 1.创建空文件attrtest,然后删除,提示无法删除,因为有隐藏文件 [root@localhost tmp] ...

随机推荐

  1. 「CF547D」 Mike and Fish

    「CF547D」 Mike and Fish 传送门 介绍三种做法. \(\texttt{Solution 1}\) 上下界网络流 我们将每一行.每一列看成一个点. 两种颜色的数量最多相差 \(1\) ...

  2. Gitbook配置目录折叠

    如果有多个目录,Gitbook在浏览器上打开时,默认所有的目录都会打开,当目录比较多时,全部显示不利于阅读. 可以使用插件配置目录折叠,使得打开浏览器时这些目录默认是关闭的. 在执行gitbook i ...

  3. etcd的使用

    etcd的使用 什么是etcd etcd的特点 etcd的应用场景 服务注册与发现 消息发布和订阅 负载均衡 分布式通知与协调 分布式锁 分布式队列 集群监控与Leader竞选 参考 etcd的使用 ...

  4. 结对开发_石家庄地铁查询web系统

    结对开发:队友田昕可 大二上学期做过只有两号线的地铁查询系统,但是只能在控制台操作.这一次将线路加到了六条,并且要求web实现,下面简述一下设计思路和具体代码实现: 1.数据库建表 于我们自己习惯而言 ...

  5. java并发编程基础——线程相关的类

    线程相关类 java还为线程安全提供了一些工具类. 一.ThreadLocal类(Thread Local Variable) ThreadLocal类,是线程局部变量的意思.功用非常简单,就是为每一 ...

  6. 微信小程序云开发-云存储的应用-识别营业执照

    一.准备工作 1.创建云函数identify 二.云函数identify中index.js代码 1 // 云函数入口文件 2 const cloud = require('wx-server-sdk' ...

  7. redis的单线程

    一.redis为什么这么快 1.完全基于内存,绝大部分请求是纯粹的内存操作,非常快速.数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1):2.数据结构简单 ...

  8. 大数据学习(12)—— Hive Server2服务

    什么是Hive Server2 上一篇我们启动了hive --service metastore服务,可以通过命令行来访问hive服务,但是它不支持多客户端同时访问,参见官网说明:HiveServer ...

  9. ICCV2021 | 重新思考视觉transformers的空间维度

    ​ 论文:Rethinking Spatial Dimensions of Vision Transformers 代码:https://github.com/naver-ai/pit 获取:在CV技 ...

  10. Mybatis源码解析1—— JDBC

    在之前的文章中,我为大家介绍了 Mybatis 的详细用法,算是基础教程. 详细链接:Mybatis 基础教程 言归正传,只懂基础可不行,接下来将给大家带来高阶的源码解析教程,从浅入深,通过源码解析, ...