• 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() { }
     }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    <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">
                            
                            <StackPanel.Resources>
                                <Style TargetType="StackPanel">
                                    "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>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43

    在这里插入图片描述

    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的补充。

  • 相关阅读:
    2022-10-30 mysql列存储引擎-自定义函数-return返回select语句结果异常-问题定位
    AI 绘画整体认知
    数字化门店| 美甲美睫店管理系统| 小程序教程
    【Dubbo】入门搭建
    攻防世界-WEB-upload1
    Linux基本使用和web程序部署
    Vue3函数式编程
    浅谈前缀索引
    [Common c/c++] 生产者消费者模型 using mutex/cv/semaphore
    梦想编织者——Adobe Dreamweaver
  • 原文地址:https://blog.csdn.net/qq_44695769/article/details/136224344