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.rhkb.cn/news/264069.html

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

相关文章

python jupyter notebook打开页面方便使用

如果没安装jupyter, 请安装&#xff1a; pip install jupyter notebook 运行jupyter notebook jupyter-notebook

牵引机和挖掘机装配流水线自动互锁防呆系统无线通讯应用

在挖掘机装配工序中&#xff0c;液压系统检测、调试是其生产工艺中的重要环节。液压检测过程中需要操作铲斗、斗杆、动臂动作&#xff0c;这一过程中流水线挖掘机因带动偏移易发生安全事故及机械损伤故障等情况&#xff0c;需要采用牵引机链条牵引固定流水线挖掘机&#xff0c;…

flutter开发实战-手势Gesture与ListView滚动竞技场的可滑动关闭组件

flutter开发实战-手势Gesture与ListView滚动竞技场的可滑动关闭组件 最近看到了一个插件&#xff0c;实现一个可滑动关闭组件。滑动关闭组件即手指向下滑动&#xff0c;组件随手指移动&#xff0c;当移动一定位置时候&#xff0c;手指抬起后组件滑出屏幕。 一、GestureDetect…

用一行代码在几秒钟内抓取任何网站

如果你正在寻找最强大的 Python 抓取工具&#xff1f;不要再看了&#xff01;这一行代码将帮助你立即启动并运行。 Scrapeasy Scrapeasy 是一个 Python 库&#xff0c;可以轻松抓取网页并从中提取数据。它可用于从单个页面抓取数据或从多个页面抓取数据。它还可用于从 PDF 和…

通过跳板机拷贝远程服务器文件

## 背景 在日常开发或者运维中&#xff0c;经常会遇到开发环境与线上环境网络隔离&#xff0c;需要通过跳板机连接的场景&#xff0c;如果需要将目标机器上的定位信息搬迁到开发机做进一步排查时&#xff0c;经常取文件比较费劲&#xff0c;一般操作是将目标文件拷贝到跳板机&…

gnss 自然灾害监测预警系统是什么

【TH-WY1】GNSS自然灾害监测预警系统是一种基于全球导航卫星系统&#xff08;GNSS&#xff09;技术的自然灾害监测和预警系统。它利用GNSS的高精度定位技术&#xff0c;通过在地表布置GNSS接收设备&#xff0c;实时监测地表形变、位移、沉降等参数&#xff0c;从而实现对自然灾…

【FX110】因为爱情,台湾汇友陷OrientalFX投资骗局损失近50万

近日&#xff0c;一位台湾汇友就在感情与金钱上受到双重打击&#xff0c;在一场“浪漫骗局”中损失近50万新台币。 因为爱情&#xff0c;陷入无法出金的投资骗局 据汇友描述&#xff0c;她从未有过投资经验&#xff0c;之所以突然入市&#xff0c;是因为“Kevin”。Kevin是她在…

全面InfiniBand解决方案——LLM培训瓶颈问题

ChatGPT对技术的影响引发了对人工智能未来的预测&#xff0c;尤其是多模态技术的关注。OpenAI推出了具有突破性的多模态模型GPT-4&#xff0c;使各个领域取得了显著的发展。 这些AI进步是通过大规模模型训练实现的&#xff0c;这需要大量的计算资源和高速数据传输网络。端到端…

软考系分之多媒体的容量计算、多媒体的标准、媒体数据压缩

文章目录 1、概要2、数据压缩3、多媒体的标准4、多媒体的容量计算5、总结 1、概要 本篇重点介绍多媒体技术&#xff0c;包括多媒体标准、数据压缩和媒体容量的计算。 2、数据压缩 媒体数据能压缩的话&#xff0c;有个前提条件就是数据存在冗余&#xff0c;包括时间冗余、空间冗…

【Java程序设计】【C00267】基于Springboot的在线考试系统(有论文)

基于Springboot的在线考试系统&#xff08;有论文&#xff09; 项目简介项目获取开发环境项目技术运行截图 项目简介 本系统是基于Springboot的在线考试系统&#xff1b;本系统主要分为管理员、教师和学生三种角色&#xff1b; 管理员登录系统后&#xff0c;可以对首页&#x…

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

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

day16_ListSet课后练习题 - 参考答案

文章目录 day16_课后练习题第1题第2题第3题第4题第5题第6题第7题第8题 day16_课后练习题 第1题 案例&#xff1a; ​ 1、用一个String[]数组存点数 ​ 2、用一个String[]数组存花色 ​ 3、用一个String[]数组存大王、小王 ​ 4、用上面的数组&#xff0c;生成一副扑克牌 …

第四节:Vben Admin登录对接后端getUserInfo接口

系列文章目录 第一节&#xff1a;Vben Admin介绍和初次运行 第二节&#xff1a;Vben Admin 登录逻辑梳理和对接后端准备 第三节&#xff1a;Vben Admin登录对接后端login接口 第四节&#xff1a;Vben Admin登录对接后端getUserInfo接口 文章目录 系列文章目录前言一、回顾Vben…

多重网格(Multigrid Method)-1

See https://zhuanlan.zhihu.com/p/49489140?utm_id0

【Linux进程】进程状态---进程僵尸与孤儿

&#x1f4d9; 作者简介 &#xff1a;RO-BERRY &#x1f4d7; 学习方向&#xff1a;致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 &#x1f4d2; 日后方向 : 偏向于CPP开发以及大数据方向&#xff0c;欢迎各位关注&#xff0c;谢谢各位的支持 目录 1.进程排队2.进程状态…

Stable Diffusion 绘画入门教程(webui)-ControlNet(Inpaint)

上篇文章介绍了语义分割Tile/Blur&#xff0c;这篇文章介绍下Inpaint&#xff08;重绘&#xff09; Inpaint类似于图生图的局部重绘&#xff0c;但是Inpain效果要更好一点&#xff0c;和原图融合会更加融洽&#xff0c;下面是案例&#xff0c;可以看下效果&#xff08;左侧原图…

前端基础面试题(一)

摘要&#xff1a;最近&#xff0c;看了下慕课2周刷完n道面试题&#xff0c;记录下... 1.请说明Ajax、Fetch、Axios三者的区别 三者都用于网络请求&#xff0c;但维度不同&#xff1a; Ajax&#xff08;Asynchronous Javascript ang XML&#xff09;&#xff0c;是一种在不重新…

ARM处理器有哪些工作模式和寄存器?各寄存器作用是什么?ARM异常中断处理流程?

《嵌入式工程师自我修养/C语言》系列——ARM处理器有哪些工作模式和寄存器&#xff1f;各寄存器作用是什么&#xff1f; 一、ARM处理器的工作模式及寄存器1.1 ARM处理器的工作模式1.2 ARM处理器中的寄存器 二、ARM 异常中断处理2.1 什么是异常&#xff1f;异常向量表是什么&…

[RCTF2015]EasySQL1 题目分析与详解

一、题目介绍&#xff1a; 1、题目来源&#xff1a; BUUCTF网址 2、题目介绍&#xff1a; 拿到flag。 二、解题思路&#xff1a; 我们发现题目首页有登录和注册账号两个选项&#xff0c;我们首先尝试注册账号&#xff0c;尝试注册username为admin的账号&#xff0c;输入密码…

FPGA OSERDESE2

Output Parallel-to-Serial Logic Resources (OSERDESE2) OSERDESE2 在Xilinx 7 系列器件是一款专用的并行至串行转换器,具有特定的时钟和逻辑资源,旨在促进高速源同步接口的实现。每个OSERDESE2模块都包括一个专用的数据串行器和 3 状态控制。数据和 3 态串行器都可以在 SD…