在 Snoop 中使用 PowerShell 脚本进行更高级的 UI 调试
原文:在 Snoop 中使用 PowerShell 脚本进行更高级的 UI 调试

版权声明:本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。欢迎转载、使用、重新发布,但务必保留文章署名吕毅(包含链接:https://walterlv.blog.csdn.net/),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我联系(walter.lv@qq.com)。 https://blog.csdn.net/WPwalter/article/details/87904027

在 WPF 开发时,有 Snoop 的帮助,UI 的调试将变得非常轻松。使用 Snoop,能轻松地查看 WPF 中控件的可视化树以及每一个 Visual 节点的各种属性,或者查看数据上下文,或者监听查看事件的引发。

不过,更强大的是支持使用 PowerShell 脚本。这使得它即便 UI 没有给你提供一些入口,你也能通过各种方式查看或者修改 UI。


本文内容

  • Snoop PowerShell 入口
  • 自带的 PowerShell 变量
  • 基本的 PowerShell 命令
    • 属性
    • 创建对象
    • 调用方法
    • 参考资料

Snoop PowerShell 入口

常规 Snoop 的使用方法,将狮子瞄准镜拖出来对准要调试 UI 的 WPF 窗口松开。这里我拿 Visual Studio 2019 的窗口做试验。

在打开的新的 Snoop 窗口中我们打开 PowerShell 标签。

本文的内容将从这里开始。

自带的 PowerShell 变量

在 Snoop 的 PowerShell 提示窗口中,我们可以得知有两个变量可以使用:$root$selected。包含这两个,还有其他的可以使用:

  • $root 拿到当前 Snoop 窗口顶层元素类型的实例
  • $selected 拿到当前 Snoop 用鼠标或键盘选中的元素的实例
  • $parent 拿到当前 Snoop 选中元素的可视化树父级
  • $null 就是 .NET 中的 null

当然,你也可以定义和使用其他的变量,后面会说。

基本的 PowerShell 命令

属性

# 获取属性
$selected.Visual.Content
# 将属性设置为 null
$selected.Visual.Content = $null

直接像 C# 语法那样一直在后面使用 . 可以访问实例中的属性。不需要关心实例是什么类型的,只要拥有那个属性,就可以访问到。

比如下面,上面的例子我们选中的是 MainWindow,于是我们使用 $selected.Visual.Content 访问到 MainWindowContent 属性,而后面 $selected.Visual.Content = $null 则是将 Window 的内容清空了。

创建对象

# 创建对象
$button = New-Object System.Windows.Controls.Button -property @{ Content = "欢迎访问 walterlv.com" }

调用方法

$selected.Visual.Children.Add($button)

顶部的那个按钮就是通过上面的命令添加上去的。

调用静态方法用的是 [类名]::方法名(参数)

$button.Content = [System.Environment]::Version.ToString() + " running for walterlv.com"


参考资料

  • Snooping WPF: Tips and PowerShell tricks

我的博客会首发于 https://walterlv.com/,而 CSDN 和博客园仅从其中摘选发布,而且一旦发布了就不再更新。

如果在博客看到有任何不懂的内容,欢迎交流。我搭建了 dotnet 职业技术学院 欢迎大家加入。

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。欢迎转载、使用、重新发布,但务必保留文章署名吕毅(包含链接:https://walterlv.blog.csdn.net/),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我联系。

posted on 2019-03-08 14:25 NET未来之路 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/lonelyxmas/p/10495596.html

在 Snoop 中使用 PowerShell 脚本进行更高级的 UI 调试相关推荐

  1. GPO:在 Start/Logon 中使用 PowerShell 脚本

    目录 1.技术说明 2.添加脚本 3.脚本执行顺序 4.控制脚本运行的时机 5.关于 Execution Policy

  2. Windows 任务计划程序定时执行 powershell 脚本

    由于需要进行一些特殊操作,打算使用 powershell 来写脚本,需要Windows 任务计划程序定时执行. 怎么在Windows 任务计划程序中执行powershell脚本?? 做一个简单测试:本 ...

  3. linux运行powershell,linux – 是否可以编写一个在bash / shell和PowerShell中运行的脚本?...

    我需要创建一个集成脚本来设置一些环境变量,使用wget下载文件并运行它. 挑战在于它需要是可以在Windows PowerShell和bash / shell上运行的SAME脚本. 这是shell脚本 ...

  4. Powershell知识点1:开启脚本限制 报错:无法加载文件,因为在此系统中禁止执行脚本

    写了一个powershell脚本测试脚本,结果执行的时候报错 PS D:\> .\pshell.ps1 无法加载文件 D:\pshell.ps1,因为在此系统中禁止执行脚本.有关详细信息,请参阅 ...

  5. powershell禁用计算机,PowerShell 因为在此系统中禁止执行脚本 解决方法

    在Powershell直接脚本时会出现: 无法加载文件 ******.ps1,因为在此系统中禁止执行脚本.有关详细信息,请参阅 "get-help about_signing". ...

  6. PowerShell因为在此系统中禁止执行脚本

    PowerShell因为在此系统中禁止执行脚本 解决方法: 在powershell中执行 set-ExecutionPolicy RemoteSigned

  7. 在Powershell中禁止执行脚本

    在Powershell中执行脚本时,有如下报错: 无法加载文件 F:\script\1.ps1,因为在此系统中禁止执行脚本.有关详细信息,请参阅 "get-help about_signin ...

  8. PowerShell因为在此系统中禁止执行脚本解决方法

    在Powershell直接脚本时会出现: 无法加载文件 ******.ps1,因为在此系统中禁止执行脚本.有关详细信息,请参阅 "get-help about_signing".  ...

  9. powershell执行c语言文件,c语言中调用shell脚本

    [转]c语言中调用shell脚本 关于在c语言中调用shell脚本,先是在百度上百度了一下 下面的这个应该是说的比较详细的 dreamerkxz.blog.163.com/blog/static/82 ...

最新文章

  1. hdu3786 找出直系亲属 水题
  2. 图解Oracle常用SQL语句
  3. 深度 | 数据湖分析算力隔离技术剖析
  4. Openstack命令
  5. Java中List for循环的几种写法种写法总结(推荐)
  6. 驳熊节和Martin Fowler的Java消亡论!
  7. RubyGems 镜像 -- 淘宝网
  8. Java代码实现“年-月-日 上午/下午时:分:秒”
  9. C# 一些不注意知识点:命名空间,等级,class等等
  10. InnoDB存储引擎的数据存储方式(存储模式)
  11. 代码自动生成:Github Copilot
  12. java在文本框动态显示时间,在文本框中动态地显示当前时间,有木有人做过,指导下初学者...
  13. 强化学习——格子游戏问题
  14. 那些出其不意给你惊喜的点,重新感受for循环的爱,来自C#
  15. 玩游戏学编程,寓教于乐:12个学习编程的游戏化平台
  16. CLI (命令行接口) 简易开发
  17. 罗技 Logitech flow 连接
  18. 【algorithm】源码详解中国大陆新身份证号码算法
  19. torc中abs()和abs_()的区别
  20. 2022-2027年中国北京养老机构行业市场深度分析及投资战略规划报告

热门文章

  1. Windows下安装及使用NVM
  2. 出现$ref的原因及解决方案
  3. [ZJOI2012]数列
  4. .net:Code First 创建或更新数据库
  5. 极简单的方式序列化sqlalchemy结果集为JSON
  6. git-svn — 让git和svn协同工作
  7. [LeetCode][JavaScript]Roman to Integer
  8. FAR,FRR,EER
  9. 搜索时,怎样排除不需要的关键字
  10. mybatis 使用in 查询时报错_MyBatis(四):mybatis中使用in查询时的注意事项