WPF 开发调试比较:Visual Studio 原生和Snoop调试控制台

文章目录

  • 前言
  • 运行环境
  • 简单的WPF代码
    • 实现一个简单的ListBox
    • Visual Studio自带代码调试
      • 热重置功能测试
      • 实时可视化树
        • 查找窗口元素
        • 显示属性
    • Snoop调试使用
    • Snoop简单使用
      • 调试控制台
      • 元素追踪
      • 结构树
        • Visual/可视化结构树
        • Logical/本地代码可视化树
        • AutoMation/自动识别结构树
      • WPF元素控制台
  • 结论

前言

WPF虽然自己本身自带调试工具,但是那个调试工具相对来说功能有点少,我这里会对Visual Studio 原生的调试工具和第三方调试工具Snoop进行比较

运行环境

  • window10
  • visual studio 2022
  • .net core 8.0

简单的WPF代码

我这里用了CommunityToolkit.MVVM
在这里插入图片描述

实现一个简单的ListBox

ViewModel

 public class TestViewModel{public record Person(int Id,string Name,string Descirption);public List<Person> People => new List<Person>(){new Person(1,"小王","王哥"),new Person(2,"小帅","大帅比"),new Person(3,"小美","美美的")};public TestViewModel() { }}
<UserControl x:Class="WpfSnoopDemo.Views.TestView"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:local="clr-namespace:WpfSnoopDemo.Views"mc:Ignorable="d" xmlns:viewModels="clr-namespace:WpfSnoopDemo.ViewModels"d:DesignHeight="450" d:DesignWidth="800"><UserControl.DataContext><viewModels:TestViewModel /></UserControl.DataContext><Grid><ListBox ItemsSource="{Binding People}"><ListBox.ItemTemplate><DataTemplate><StackPanel Orientation="Vertical"><!--这个是一种仿CSS的写法--><StackPanel.Resources><Style TargetType="StackPanel"><Setter Property="Orientation"Value="Horizontal" /></Style></StackPanel.Resources><StackPanel><TextBlock Text="Id:" /><TextBlock Text="{Binding Id}" /></StackPanel><StackPanel><TextBlock Text="Name:" /><TextBlock Text="{Binding Name}" /></StackPanel><StackPanel><TextBlock Text="Descirption:" /><TextBlock Text="{Binding Descirption}" /></StackPanel></StackPanel></DataTemplate></ListBox.ItemTemplate></ListBox></Grid>
</UserControl>

在这里插入图片描述

Visual Studio自带代码调试

在这里插入图片描述
在这里插入图片描述

热重置功能测试

热重置的意思是编译运行之后修改源代码,能通过重载而不用重新编译就能看到新修改的效果。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

实时可视化树

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

序号用途
1显示WPF Debug运行调试工具
2选择元素
3显示装饰器,就是个十字坐标定位,显示盒子模型
4跟踪具有焦点的元素,暂时不知道有啥用
5显示绑定问题
6辅助扫描,没啥用
7预览选定项,不知道有啥用
8活动文档查找元素。就是你鼠标选择了哪个,点这个可以跳转到鼠标选中的对应结构
9显示对应元素属性
10展开树结构
11压缩树结构
12只显示自己的代码

WPF Debug窗口是部分工具展示,这里就不展开说明了。
在这里插入图片描述

查找窗口元素

在这里插入图片描述

显示属性

在这里插入图片描述
在这里插入图片描述
这里面会显示所有对应的属性

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
也可以看DataContext
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

Snoop调试使用

WPF Snoop Github地址

在这里插入图片描述

Snoop下载地址

在这里插入图片描述
下载好了直接安装

在这里插入图片描述

双击运行之后出现这个界面
在这里插入图片描述

Snoop简单使用

关于Snoop的用法

在这里插入图片描述
打开Snoop我们可以看到这几个按钮

序号含义使用情况
1选择正在运行的WPF窗口一般不用
2刷新找到的WPF窗口一般不用
3在【1】选择好对象后,创建一个Snoop克隆一般不用
4拖动准星,选择WPF窗口,实现【3】效果一般不用
5创建一个Snoop可克隆对象并添加【调试控制台】常用
6在【4】的基础上面创建【调试控制台】常用
7设置一般默认即可
8缩小
9关闭

调试控制台

我们在使用【5】/【6】的时候,会生成如下的调试窗口

在这里插入图片描述
在这里插入图片描述

序号功能
1结构树
2配置文件
3设置
4窗口元素追踪,快捷键:Ctrl+Shift+鼠标移动
5断点调试
6版本
7主题,有黑色和白色

元素追踪

在这里插入图片描述

使用Ctrl+Shift选中元素,由于我GIF录屏会有窗口遮挡,所以有点不连贯。
在这里插入图片描述
有时候选择多了会出现这个Bug,我们点击清空即可
在这里插入图片描述

结构树

在这里插入图片描述

我们先选中一个元素

在这里插入图片描述
鼠标停留在对应的树节点上面,会显示对应的可视化元素值
在这里插入图片描述

Visual/可视化结构树

可视化结构树就是里面所有的基础控件元素,和我们F12跳出来的Html控制台的结果差不多

在这里插入图片描述

Logical/本地代码可视化树

在这里插入图片描述

AutoMation/自动识别结构树

自动识别处于两种之间,自动识别我们自己本地的代码

在这里插入图片描述

WPF元素控制台

在这里插入图片描述

序号用处
1元素属性
2元素上下文
3元素Event事件,一般是鼠标事件
4元素触发器
5元素行为
6元素方法
7Debug监听器

这里用法太多了,我们就不展开说明了
在这里插入图片描述

我们也可以实时修改对应的元素,但是感觉用处不是很大,因为WPF已经支持热重载了。
在这里插入图片描述
在这里插入图片描述

结论

Snoop算是Visual Studio的补充,Visual Studio本身的代码调试就已经是非常的惊艳了。其它的玩法我也在摸索当中。Snoop算是浏览器的F12,你是用来查看元素的,不是直接改Html结果的。这个是一个很好的代码调试的作用和对元素Visual Studio的补充。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/491970.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

100天精通Python(实用脚本篇)——第117天:基于selenium实现反反爬策略之代码输入账号信息登录网站

文章目录 专栏导读1. 前言2. 实现步骤3. 基础补充4. 代码实战4.1 创建连接4.2 添加请求头伪装浏览器4.3 隐藏浏览器指纹4.4 最大化窗口4.5 启动网页4.6 点击密码登录4.7 输入账号密码4.8 点击登录按钮4.9 完整代码4.10 GIF动图展示 五、总结 专栏导读 &#x1f525;&#x1f5…

【Android12】Monkey压力测试源码执行流程分析

Monkey压力测试源码执行流程分析 Monkey是Android提供的用于应用程序自动化测试、压力测试的测试工具。 其源码路径(Android12)位于 /development/cmds/monkey/部署形式为Java Binary # development/cmds/monkey/Android.bp // Copyright 2008 The Android Open Source Proj…

发电机测试的常见参数和规格有哪些需要关注?

发电机测试是确保其正常运行和性能的关键步骤。在进行发电机测试时&#xff0c;需要关注一些常见的参数和规格&#xff0c;以确保其安全、高效和可靠的运行。以下是一些需要关注的发电机测试参数和规格&#xff1a; 1. 电压&#xff1a;发电机的输出电压是衡量其性能的重要指标…

车用传感器频繁损坏的原因及解决方案

1.车用传感器频繁损坏的原因&#xff1f; 雷卯EMC小哥&#xff0c;在汽车客户做整改中发现&#xff0c;车用传感器频繁损坏&#xff0c;主要的共同原因&#xff1a;不稳定的电压。 在车辆工作过程中&#xff0c;电压波动是无法避免的。这些波动可能源自发动机的启动、发电机的…

RISC-V SoC + AI | 在全志 D1「哪吒」开发板上,跑个 ncnn 神经网络推理框架的 demo

引言 D1 是全志科技首款基于 RISC-V 指令集的 SoC&#xff0c;主核是来自阿里平头哥的 64 位的 玄铁 C906。「哪吒」开发板 是全志在线基于全志科技 D1 芯片定制的 AIoT 开发板&#xff0c;是目前还比较罕见的使用 RISC-V SoC 且可运行 GNU/Linux 操作系统的可量产开发板。 n…

进阶数据结构 BTree 的插入与删除操作实现

在数据库系统和文件系统中&#xff0c;高效的数据组织与管理是关键之一。B-Tree&#xff08;Balanced Tree&#xff09;作为一种平衡搜索树结构&#xff0c;在这一领域发挥着重要作用。本文详细探讨了 B-Tree 的基本概念以及对其进行插入与删除操作的实现&#xff0c;旨在帮助读…

【嵌入式学习】QT-Day4-Qt基础

简单实现闹钟播报&#xff0c;设置时间&#xff0c;当系统时间与设置时间相同时播报语音5次&#xff0c;然后停止。如果设置时间小于当前系统时间&#xff0c;则弹出消息提示框&#xff0c;并清空输入框。 #include "my_clock.h" #include "ui_my_clock.h&quo…

面试redis篇-08数据淘汰策略

原理 当Redis中的内存不够用时,此时在向Redis中添加新的key,那么Redis就会按照某一种规则将内存中的数据删除掉,这种数据的删除规则被称之为内存的淘汰策略。 Redis支持8种不同策略来选择要删除的key: noeviction: 不淘汰任何key,但是内存满时不允许写入新数据,默认就是…

【教程】 iOS混淆加固原理篇

目录 摘要 引言 正文 1. 加固的缘由 2. 编译过程 3. 加固类型 1) 字符串混淆 2) 类名、方法名混淆 3) 程序结构混淆加密 4) 反调试、反注入等一些主动保护策略 4. 逆向工具 5. OLLVM 6. IPA guard 7. 代码虚拟化 总结 摘要 本文介绍了iOS应用程序混淆加固的缘由…

介绍 PIL+IPython.display+mtcnn for 音视频读取、标注

1. nn.NLLLoss是如何计算误差的? nn.NLLLoss是负对数似然损失函数&#xff0c;用于多分类问题中。它的计算方式如下&#xff1a;首先&#xff0c;对于每个样本&#xff0c;我们需要将其预测结果通过softmax函数转换为概率分布。softmax函数可以将一个向量映射为一个概率分布&…

Python Web开发记录 Day3:BootStrap

名人说&#xff1a;莫道桑榆晚&#xff0c;为霞尚满天。——刘禹锡&#xff08;刘梦得&#xff0c;诗豪&#xff09; 创作者&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 目录 三、BootStrap1、BootStrap-初体验2、BootStrap…

Linux之vim的使用详细解析

个人主页&#xff1a;点我进入主页 专栏分类&#xff1a;C语言初阶 C语言进阶 数据结构初阶 Linux C初阶 算法 欢迎大家点赞&#xff0c;评论&#xff0c;收藏。 一起努力&#xff0c;一起奔赴大厂 目录 一.vim简介 二.vim的基本概念 三.vim的基本操作 3.1准备 …