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.pswp.cn/news/696937.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/696937.shtml
英文地址,請注明出處:http://en.pswp.cn/news/696937.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

基于springboot+vue的房屋租賃管理系統(前后端分離)

博主主頁&#xff1a;貓頭鷹源碼 博主簡介&#xff1a;Java領域優質創作者、CSDN博客專家、阿里云專家博主、公司架構師、全網粉絲5萬、專注Java技術領域和畢業設計項目實戰&#xff0c;歡迎高校老師\講師\同行交流合作 ?主要內容&#xff1a;畢業設計(Javaweb項目|小程序|Pyt…

【OpenAI官方課程】第四課:ChatGPT文本推斷Summarizing

歡迎來到ChatGPT 開發人員提示工程課程&#xff08;ChatGPT Prompt Engineering for Developers&#xff09;&#xff01;本課程將教您如何通過OpenAI API有效地利用大型語言模型&#xff08;LLM&#xff09;來創建強大的應用程序。 本課程由OpenAI 的Isa Fulford和 DeepLearn…

手拉手Vite+Vue3+TinyVue+Echarts+TailwindCSS

技術棧springboot3hutool-alloshi-coreVue3viteTinyVueEchartsTailwindCSS軟件版本IDEAIntelliJ IDEA 2022.2.1JDK17Spring Boot3.1hutool-all5.8.18oshi-core6.4.1Vue35.0.10vite5.0.10axios1.6.7echarts5.4.3 ECharts是一個使用 JavaScript 實現的開源可視化庫&#xff0c;可…

快速搭建ARM64實驗平臺(QEMU虛擬機+Debian)

文章目錄 前言一、實驗平臺介紹二、安裝步驟2.1 安裝工具2.2 下載倉庫2.3 編譯內核并制作根文件系統2.4 運行剛才編譯好的ARM64版本的Debian系統2.5 在線安裝軟件包2.6 在QEMU虛擬機和主機之間共享文件 三、單步調試ARM64 Linux內核參考資料 前言 最近翻閱笨叔的《奔跑吧Linux…

go-zero微服務入門教程

go-zero微服務入門教程 本教程主要模擬實現用戶注冊和用戶信息查詢兩個接口。 準備工作 安裝基礎環境 安裝etcd&#xff0c; mysql&#xff0c;redis&#xff0c;建議采用docker安裝。 MySQL安裝好之后&#xff0c;新建數據庫dsms_admin&#xff0c;并新建表sys_user&#…

【Git】 刪除遠程分支

Git 刪除遠程分支有以下幾種方法 服務端UI工具 Git 的服務端圖形化工具主要是 web 端。常用的有 GitHub、Gitea、Gutlab 等。 這些工具都提供了分支管理&#xff0c;可以直接在各服務端找到相關功能&#xff0c;謹慎刪除。 客戶端UI工具 Git 擁有諸多客戶端 UI 工具&#x…

詳細分析Python中的unittest測試框架

目錄 1. 基本知識2. API2.1 斷言2.2 setUp() 和 tearDown() 3. Demo 1. 基本知識 unittest 是 Python 標準庫中的一個單元測試框架&#xff0c;用于編寫和執行測試用例以驗證代碼的正確性 提供了一種結構化的方法來編寫測試&#xff0c;使得測試代碼更加模塊化和易于維護 以…

【ACW 服務端】頁面操作Java增刪改查代碼生成

版本: 1.2.2-JDK17-SNAPSHOT 項目地址&#xff1a;wu-smart-acw 演示地址&#xff1a;演示地址 admin/admin Java增刪改查代碼生成 找到對應菜單 選擇你需要的數據實例 選擇數據庫 選擇數據庫表 選擇客戶端&#xff08;如果是本地ACW服務代碼啟動默認注冊上的客戶端ID是…

騰訊云主機Ubuntu22.04安裝Odoo17

一、安裝PostgreSQL16 參見之前的文章 Ubuntu22.04安裝PostgreSQL-CSDN博客 二、安裝Odoo17 本方案使用的nightly版的odoo&#xff0c;安裝的都是最新版odoo wget -O - https://nightly.odoo.com/odoo.key | apt-key add - echo "deb http://nightly.odoo.com/17.0/n…

Maven【1】(命令行操作)

文章目錄 一丶創建maven工程二、理解pom.xml三、maven的構建命令1.編譯操作2.清理操作3.測試操作4.打包操作5.安裝操作 一丶創建maven工程 首先創建這樣一個目錄&#xff0c;然后從命令行里進入這個目錄&#xff1a; 然后接下來就在這個命令行里進行操作了。 這個命令是&…

Python學習筆記——PySide6設計GUI應用之UI與邏輯分離

1、打開PySide6的UI設計工具pyside6-designer&#xff0c;設計一個主窗口&#xff0c;保存文件名為testwindow.ui 2、使用PySide6的RCC工具把testwindow.ui文件轉換為testwindow_rc.py文件&#xff0c;此文件中有一個類Ui_MainWindow&#xff08;包含各種控件對象&#xff09;…

設計模式淺析(八) ·外觀模式

設計模式淺析(八) 外觀模式 日常叨逼叨 java設計模式淺析&#xff0c;如果覺得對你有幫助&#xff0c;記得一鍵三連&#xff0c;謝謝各位觀眾老爺&#x1f601;&#x1f601; 外觀模式 概念 外觀模式&#xff08;Facade Pattern&#xff09;是一種設計模式&#xff0c;它為…

深度學習發展里程碑事件2006-2024

2006-2024年&#xff0c;深度學習發展經歷眾多的里程碑事件&#xff0c;一次次地刺激著人們的神經&#xff0c;帶來巨大的興奮。電影還在繼續&#xff0c;好戲在后面&#xff0c;期待…… 2006年 深度信念網絡&#xff08;DBNs&#xff09;&#xff1a;Geoffrey Hinton與他的學…

備戰藍橋杯 Day10(背包dp)

01背包問題 1267&#xff1a;【例9.11】01背包問題 【題目描述】 一個旅行者有一個最多能裝 M&#xfffd; 公斤的背包&#xff0c;現在有 n&#xfffd; 件物品&#xff0c;它們的重量分別是W1&#xff0c;W2&#xff0c;...,Wn&#xfffd;1&#xff0c;&#xfffd;2&#…

藍橋杯刷題--python-10(2023填空題3)

0工作時長 - 藍橋云課 (lanqiao.cn) import datetime time_str_list=[] while(True):tmp=input()if not tmp: breaktime_str_list.append(tmp)# time_list=[datetime.datetime.strptime(t,"%Y-%m-%d %H:%M:%S")for t in time_str_list] time_list.sort() sum=0 for i…

【代碼隨想錄算法訓練營Day25】● 216.組合總和III ● 17.電話號碼的字母組合

文章目錄 Day 25 第七章 回溯算法part02216.組合總和III自己的思路&#xff08;?通過&#xff09; 17.電話號碼的字母組合思路代碼 Day 25 第七章 回溯算法part02 今日內容&#xff1a; ● 216.組合總和III● 17.電話號碼的字母組合 216.組合總和III 如果把 組合問題理解了…

計算機組成原理(9)----硬布線控制器

控制單元CU若想發出對應的控制信號&#xff0c;則需要以下信息&#xff1a;指令操作碼&#xff0c;目前的機器周期&#xff0c;節拍信號&#xff0c;機器狀態條件&#xff0c;根據這些信息&#xff0c;CU就能確定在這個節拍下應該發出哪些"微命令"&#xff0c;也就是…

SQL注入:使用預編譯防御SQL注入時產生的問題

目錄 前言 模擬預編譯 真正的預編譯 預編譯中存在的SQL注入 寬字節 沒有進行參數綁定 無法預編譯的位置 前言 相信學習過SQL注入的小伙伴都知道防御SQL注入最好的方法&#xff0c;就是使用預編譯也就是PDO是可以非常好的防御SQL注入的&#xff0c;但是如果錯誤的設置了…

計算機設計大賽 深度學習動物識別 - 卷積神經網絡 機器視覺 圖像識別

文章目錄 0 前言1 背景2 算法原理2.1 動物識別方法概況2.2 常用的網絡模型2.2.1 B-CNN2.2.2 SSD 3 SSD動物目標檢測流程4 實現效果5 部分相關代碼5.1 數據預處理5.2 構建卷積神經網絡5.3 tensorflow計算圖可視化5.4 網絡模型訓練5.5 對貓狗圖像進行2分類 6 最后 0 前言 &#…

從零學算法238

238.給你一個整數數組 nums&#xff0c;返回 數組 answer &#xff0c;其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘積 。 題目數據 保證 數組 nums之中任意元素的全部前綴元素和后綴的乘積都在 32 位 整數范圍內。 請 不要使用除法&#xff0c;且在 O(n) 時間復…