在 Snoop 中使用 PowerShell 脚本进行更高级的 UI 调试
在 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
访问到 MainWindow
的 Content
属性,而后面 $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/),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我联系。
转载于:https://www.cnblogs.com/lonelyxmas/p/10495596.html
在 Snoop 中使用 PowerShell 脚本进行更高级的 UI 调试相关推荐
- GPO:在 Start/Logon 中使用 PowerShell 脚本
目录 1.技术说明 2.添加脚本 3.脚本执行顺序 4.控制脚本运行的时机 5.关于 Execution Policy
- Windows 任务计划程序定时执行 powershell 脚本
由于需要进行一些特殊操作,打算使用 powershell 来写脚本,需要Windows 任务计划程序定时执行. 怎么在Windows 任务计划程序中执行powershell脚本?? 做一个简单测试:本 ...
- linux运行powershell,linux – 是否可以编写一个在bash / shell和PowerShell中运行的脚本?...
我需要创建一个集成脚本来设置一些环境变量,使用wget下载文件并运行它. 挑战在于它需要是可以在Windows PowerShell和bash / shell上运行的SAME脚本. 这是shell脚本 ...
- Powershell知识点1:开启脚本限制 报错:无法加载文件,因为在此系统中禁止执行脚本
写了一个powershell脚本测试脚本,结果执行的时候报错 PS D:\> .\pshell.ps1 无法加载文件 D:\pshell.ps1,因为在此系统中禁止执行脚本.有关详细信息,请参阅 ...
- powershell禁用计算机,PowerShell 因为在此系统中禁止执行脚本 解决方法
在Powershell直接脚本时会出现: 无法加载文件 ******.ps1,因为在此系统中禁止执行脚本.有关详细信息,请参阅 "get-help about_signing". ...
- PowerShell因为在此系统中禁止执行脚本
PowerShell因为在此系统中禁止执行脚本 解决方法: 在powershell中执行 set-ExecutionPolicy RemoteSigned
- 在Powershell中禁止执行脚本
在Powershell中执行脚本时,有如下报错: 无法加载文件 F:\script\1.ps1,因为在此系统中禁止执行脚本.有关详细信息,请参阅 "get-help about_signin ...
- PowerShell因为在此系统中禁止执行脚本解决方法
在Powershell直接脚本时会出现: 无法加载文件 ******.ps1,因为在此系统中禁止执行脚本.有关详细信息,请参阅 "get-help about_signing". ...
- powershell执行c语言文件,c语言中调用shell脚本
[转]c语言中调用shell脚本 关于在c语言中调用shell脚本,先是在百度上百度了一下 下面的这个应该是说的比较详细的 dreamerkxz.blog.163.com/blog/static/82 ...
最新文章
- hdu3786 找出直系亲属 水题
- 图解Oracle常用SQL语句
- 深度 | 数据湖分析算力隔离技术剖析
- Openstack命令
- Java中List for循环的几种写法种写法总结(推荐)
- 驳熊节和Martin Fowler的Java消亡论!
- RubyGems 镜像 -- 淘宝网
- Java代码实现“年-月-日 上午/下午时:分:秒”
- C# 一些不注意知识点:命名空间,等级,class等等
- InnoDB存储引擎的数据存储方式(存储模式)
- 代码自动生成:Github Copilot
- java在文本框动态显示时间,在文本框中动态地显示当前时间,有木有人做过,指导下初学者...
- 强化学习——格子游戏问题
- 那些出其不意给你惊喜的点,重新感受for循环的爱,来自C#
- 玩游戏学编程,寓教于乐:12个学习编程的游戏化平台
- CLI (命令行接口) 简易开发
- 罗技 Logitech flow 连接
- 【algorithm】源码详解中国大陆新身份证号码算法
- torc中abs()和abs_()的区别
- 2022-2027年中国北京养老机构行业市场深度分析及投资战略规划报告
热门文章
- Windows下安装及使用NVM
- 出现$ref的原因及解决方案
- [ZJOI2012]数列
- .net:Code First 创建或更新数据库
- 极简单的方式序列化sqlalchemy结果集为JSON
- git-svn — 让git和svn协同工作
- [LeetCode][JavaScript]Roman to Integer
- FAR,FRR,EER
- 搜索时,怎样排除不需要的关键字
- mybatis 使用in 查询时报错_MyBatis(四):mybatis中使用in查询时的注意事项