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

  • 相关阅读:
    打造无证服务化:这个政务服务平台有点不一样
    java 多线程(一)—— 创建线程的3种方法
    python 的configparse 读取ini 文件
    Vue3-ref、reactive函数的watch
    java实现图书管理系统
    人人都是网站分析师(从分析师视角理解网站和解读数据)-读书笔记4(完结)
    vs2017 编译Qt 5.11.2 源码
    OCP Java17 SE Developers 复习题15(完)
    前端研习录(33)——命令行工具|ECMAScript6简介|Nodejs安装|Babel转码器安装及基本用法详解及示例分析
    织梦如何用dede:type调用指定一个栏目的描述
  • 原文地址:https://blog.csdn.net/qq_44695769/article/details/136224344