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

前言

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 元素方法
7 Debug监听器

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

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

结论

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

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-23 12:42:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-23 12:42:03       101 阅读
  3. 在Django里面运行非项目文件

    2024-02-23 12:42:03       82 阅读
  4. Python语言-面向对象

    2024-02-23 12:42:03       91 阅读

热门阅读

  1. Linux下各种压缩包的压缩与解压

    2024-02-23 12:42:03       42 阅读
  2. 【springBoot】统一功能处理

    2024-02-23 12:42:03       46 阅读
  3. TensorFlow基础

    2024-02-23 12:42:03       52 阅读
  4. Putty中运行matlab文件

    2024-02-23 12:42:03       54 阅读
  5. 如何成为软件测试工程师——理论知识篇

    2024-02-23 12:42:03       56 阅读
  6. 低代码开发应对AI时代到来的挑战与机遇

    2024-02-23 12:42:03       57 阅读
  7. vue中组件之间的通信方式有多少种

    2024-02-23 12:42:03       53 阅读
  8. R语言数据分析(四)

    2024-02-23 12:42:03       49 阅读
  9. MAST20005 R Statistics

    2024-02-23 12:42:03       39 阅读
  10. 【软考】传输层协议之UDP

    2024-02-23 12:42:03       51 阅读
  11. R语言【base】——scan():读取数据值

    2024-02-23 12:42:03       49 阅读
  12. 云计算面试题【后期】

    2024-02-23 12:42:03       42 阅读