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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

8个平面设计灵感网站盘点

设计是一件非常令人兴奋的事情。特别是最常见的平面设计&#xff0c;作为一种传达想法或信息的视觉表达形式&#xff0c;被要求不仅突出个性和主题&#xff0c;而且具有创造力和美感&#xff0c;使许多设计师在灵感枯竭时疯狂。此时&#xff0c;浏览一些平面设计网站&#xff0…

Android 仿信号格子强度动画效果实现

效果图 在 Android 中&#xff0c;如果你想要绘制一个圆角矩形并使其居中显示&#xff0c;你可以使用 Canvas 类 drawRoundRect 方法。要使圆角矩形居中&#xff0c;你需要计算矩形的位置&#xff0c;这通常涉及到确定矩形左上角的位置&#xff08;x, y&#xff09;&#xff0…

ES项目应用

配置: ES存储了2-3亿条&#xff0c;几百GB ES集群有5 个节点 2主2副 ES返回数据量窗口大小设置 index.max_result_window 深度翻页 1.from size 方式 2.scroll相当于维护了一份当前索引段的快照信息&#xff0c;这个快照信息是你执行这个scroll查询时的快照。在这个查询后的任…

【Wio Terminal】使用WiFi(1)- 更新无线核心固件

使用WiFi&#xff08;1&#xff09;- 更新无线核心固件 一、概述1、更新无线核心固件步骤 1 - 擦除初始出厂固件步骤 2 - 刷入最新的固件 2、从Arduino IDE检查RTL8720固件版本安装rpcWiFi库验证 3、更新 SAMD ArduinoCore 一、概述 这篇wiki介绍了如何为Wio Terminal上的Real…

11.CSS3的媒介(media)查询

CSS3 的媒介(media)查询 经典真题 如何使用媒体查询实现视口宽度大于 320px 小于 640px 时 div 元素宽度变成 30% 媒体查询 媒体查询英文全称 Media Query&#xff0c;顾名思义就是会查询用户所使用的媒体或者媒介。 在现在&#xff0c;网页的浏览终端是越来越多了。用户可…

基于java springboot+mybatis爱游旅行平台前台+后台设计实现

基于java springbootmybatis爱游旅行平台前台后台设计实现 博主介绍&#xff1a;5年java开发经验&#xff0c;专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 央顺技术团队 Java毕设项目精品实战案例《1000套》 可定制系统 欢迎点赞 收藏…

Http改为Https后该如何测试

需要了解Http和Http之间的关系&#xff0c;他们之间都有哪些优点&#xff0c;哪些缺点&#xff0c;如果使用的产品进行了更改&#xff0c;该如何进行测试等等&#xff0c;Https提供了一个安全层&#xff08;SSL/TLS&#xff09;&#xff0c;这个安全层在客户端和服务器之间提供…

羊大师解读,春季牧场产出的羊奶更好吗?

羊大师解读&#xff0c;春季牧场产出的羊奶更好吗&#xff1f; 由于春季牧场上的牧草新鲜嫩绿且富含各种营养成分&#xff0c;例如蛋白质、维生素和矿物质等&#xff0c;所以春季产出的羊奶可能更加优质。这些营养物质为羊奶提供了丰富的营养来源&#xff0c;使得春季牧场产出…

flutter开发实战-StreamBuilder使用介绍及实例

flutter开发实战-StreamBuilder使用介绍及实例 StreamBuilder是一个Widget&#xff0c;它依赖Stream来做异步数据获取刷新widget。 一、Stream Stream是一种用于异步处理数据流的机制&#xff0c;它允许我们从一段发射一个事件&#xff0c;从另外一段去监听事件的变化.Strea…

HTTP 与 HTTPS-HTTP 解决了 HTTP 哪些问题?

资料来源 : 小林coding 小林官方网站 : 小林coding (xiaolincoding.com) HTTP 解决了 HTTP 哪些问题? HTTP 由于是明文传输&#xff0c;所以安全上存在以下三个风险: 窃听风险&#xff0c;比如通信链路上可以获取通信内容&#xff0c;用户号容易没。篡改风险&#xff0c;比如…

Vue 图片轮播第三方库 介绍

Vue图片轮播是一种在网页上以自动或手动方式展示图片的组件&#xff0c;常用于产品展示、网站banner等场景。有许多第三方库可以帮助Vue开发者轻松实现图片轮播功能。以下是一些流行的Vue图片轮播第三方库的介绍&#xff1a; 1. Vue-awesome-swiper - **简介**&#xff1a;V…

Spring Cloud Alibaba-05-Gateway网关-03-过滤器(Filter)使用

Lison <dreamlison163.com>, v1.0.0, 2023.10.20 Spring Cloud Alibaba-05-Gateway网关-03-过滤器(Filter)使用 文章目录 Spring Cloud Alibaba-05-Gateway网关-03-过滤器(Filter)使用过滤器的简介什么是过滤器&#xff1f;过滤器的生命周期过滤器的分类和作用范围 局部…

从 Elasticsearch 到 Apache Doris,统一日志检索与报表分析,360 企业安全浏览器的数据架构升级实践

导读&#xff1a;随着 360 企业安全浏览器用户规模的不断扩张&#xff0c;浏览器短时间内会产生大量的日志数据。为了提供更好的日志数据服务&#xff0c;360 企业安全浏览器设计了统一运维管理平台&#xff0c;并引入 Apache Doris 替代了 Elasticsearch&#xff0c;实现日志检…

HarmonyOS4.0系统性深入开发36 媒体查询(mediaquery)

媒体查询&#xff08;mediaquery&#xff09; 概述 媒体查询作为响应式设计的核心&#xff0c;在移动设备上应用十分广泛。媒体查询可根据不同设备类型或同设备不同状态修改应用的样式。媒体查询常用于下面两种场景&#xff1a; 针对设备和应用的属性信息&#xff08;比如显…

Prometheus+Grafana 监控

第1章Prometheus 入门 Prometheus 受启发于 Google 的 Brogmon 监控系统&#xff08;相似的 Kubernetes 是从 Google的 Brog 系统演变而来&#xff09;&#xff0c;从 2012 年开始由前 Google 工程师在 Soundcloud 以开源软件的形式进行研发&#xff0c;并且于 2015 年早期对外…

【FPGA】VHDL:小型出勤系统设计

附源代码&#xff0c;一定能实现&#xff01; 目录 EDA设计练习题&#xff1a; 实验要求如下&#xff1a; 思路分析&#xff1a; 代码 99进制计数器 码转换 顶层文件 特别注意 测试 编译通过 结果展示 RTL视图 技术映射视图 软件&#xff1a;Quartus II 13.0 (64…

【打工日常】使用docker部署StackEdit编辑器-Markdown之利器

一、StackEdit介绍 StackEdit一款强大的在线Markdown编辑器&#xff0c;不仅具备卓越的写作功能&#xff0c;还支持实时预览、多设备同步等特性。 很多时候基于安全和信息保密的关系&#xff0c;建议放在自己的服务器或者本地linux去运行&#xff0c;这样会比较省心。 二、本次…

使用k-近邻算法改进约会网站的配对效果(kNN)

目录 谷歌笔记本&#xff08;可选&#xff09; 准备数据&#xff1a;从文本文件中解析数据 编写算法&#xff1a;编写kNN算法 分析数据&#xff1a;使用Matplotlib创建散点图 准备数据&#xff1a;归一化数值 测试算法&#xff1a;作为完整程序验证分类器 使用算法&…

MybatisPlus基础入门以及入门案例

目录 一、MyBatisPlus简介 二、MyBatisPlus特性 三、MyBatisPlus支持的数据库 四、框架结构 五、入门案例 1.开发环境 2.创建数据库及表 3.创建Spring Boot工程 4.导入依赖 5.项目结构 6.配置application.yml 7.配置SpringBoot启动类 8.添加实体类 9.添加mapper接口 10.测试…

vue后台管理添加水印简单方式watermark-package

详情参考:https://www.npmjs.com/package/watermark-package 示例方法 <el-button type"primary" click"AddWatermark">添加水印</el-button><el-button type"primary" click"RemoveWatermark">清除水印</el-but…