[WPF]總結一些我在開發WPF時常用的工具

来源:https://www.cnblogs.com/dino623/archive/2020/03/30/tools_for_wpf.html
-Advertisement-
Play Games

我從一萬二千年前開始寫XAML,這麼多年用了很多各式各樣的工具,現在留在電腦里的、現在還在用的、在寫WPF時用的也就那麼幾個。這篇文章總結了這些工具,希望這些工具可以讓WPF開發者事半功倍。 1. Visual Studio Visual Studio應該無需介紹,它是“面向任何開發者的同類最佳工具 ...


我從一萬二千年前開始寫XAML,這麼多年用了很多各式各樣的工具,現在留在電腦里的、現在還在用的、在寫WPF時用的也就那麼幾個。這篇文章總結了這些工具,希望這些工具可以讓WPF開發者事半功倍。

1. Visual Studio

Visual Studio應該無需介紹,它是“面向任何開發者的同類最佳工具”。對WPF來說Visual Studio既是雞又是蛋,WPF開發者甚至有時會反編譯它的代碼參考參考,最近HandyControl也參考Visual Studio代碼增加了一個GlowWindow控制項,這是個很有趣又實用的控制項。雖然有那麼幾年WPF沒什麼大的改進,但Visual Stuido依然為XAML添加了很多使用的功能,我印象最深刻的是以下幾個。

應用程式時間線 探測器:
使用 “應用程式時間線” 探查器查找並修正 XAML 應用程式中應用程式交互的相關性能問題。 此工具通過顯示應用程式資源使用情況的詳細視圖來幫助提高 XAML 應用程式的性能。 可以分析應用程式準備 UI 框架(佈局和呈現)以及為網路和磁碟請求提供服務所花費的時間,以及在應用程式啟動、頁面載入以及調整視窗大小等應用場景中花費的時間。

熱重載

XAML熱重載允許您在應用程式運行時更改XAML代碼,從而幫助開發者構建WPF或UWP應用程式用戶界面。Visual Studio和Blend For Visual Studio都提供了熱重載。此功能使開發者能夠通過運行應用程式的數據上下文、身份驗證狀態和其他在設計時難以模擬的實際複雜性,以增量方式構建和測試XAML代碼。

實時可視化樹和實時屬性資源管理器

開發者可以使用“實時可視化樹”和“實時屬性資源管理器”實時地查看正在運行的XAML代碼。這些工具為開發者提供正在運行的XAML應用程式的UI元素的樹視圖,並向開發者顯示所選擇的任何UI元素的運行時屬性。

2. Blend for Visual Studio

Blend是專門針對XAML程式的設計軟體,經典版的Blend是獨立軟體,代碼編輯和調試功能比Visual Studio差很遠,現在它則是成為了Visual Studio的另一個模式,名字也變成Blend for Visual Studio。雖然微軟對Blend不怎麼上心,但隨著Visual Studio越來越強大,Blend For Visual Studio也跟著得益。就算我可以手寫XAML,有很多事情還是需要在Blend里做,例如設計VisualState、創建動畫、將文字和形狀轉換為路徑、獲取控制項的ControlTemplate等。

安裝Visual Studio時預設不會安裝Blend for Visual Studio,需要選中它的CheckBox:

順便一提,Visual Studio 2019不再提供BlendSDK,而這東西又基本是開發WPF必須的,所以需要自己安裝Microsoft.Xaml.Behaviors.Wpf nuget包。

3. ILSpy

現在很多WPF項目都開源了,不過反編譯工具還是少不了的。比起dnSpy和JustDecompile,我更喜歡ILSpy,因為有很多BAML只有ILSpy能反編譯出來,例如System.Windows.Controls.Ribbon.dll(見下麵截圖)。不過我也很喜歡JustDecompile的“創建項目”功能,它可以直接反編譯一個Dll並創建一個項目(如果不出錯的話)。順便一提我也很喜歡JetBrains的dotPeek,它也可以正常反編譯BAML,只是它每次啟動都很慢。

4. Snoop

Snoop是一個開源的WPF UI探索工具,它可以瀏覽正在運行的WPF程式的可視樹、改變它的屬性、查看Triggers、設置斷點等。雖然現在Visual Studio也可以做到差不多的功能,但Snoop依然是我最喜歡使用的WPF工具之一。

在以前我還喜歡用XAML Spy,可惜那個軟體停止更新了。

下麵是一張正在被Visual Studio調試的正在Spying Visual Studio 的Snoop的截圖(套娃使我快樂):

5. DebugView

DebugView是一個很古老但依然實用的工具,它可以查看應用程式或驅動程式輸出的調試信息,而且不僅能查看本地機器,還可以查看遠程機器的調試信息。總而言之有了它可以方便查看程式的調試信息,對調試應用很有幫助。

6. ReSharper

大名鼎鼎的ReSharper相信不用多介紹,不過要用上實在太花錢(授權和電腦配置)。除了可以強化C#代碼體驗,ReSharper對XAML也有很多增強功能,包括:

  • XAML的錯誤提示
  • 增強的XAML智能感知
  • 導航和查找XAML元素
  • XAML代碼重構

更詳盡的功能請看 XAML Editing Tools - Features ReSharper

7. Visual UI Automation Verify

從UISpy到Inspect到Visual UI Automation Verify,微軟提供了很多自動化測試的協助工具,現在對我來說最常用的應該是UI Automation Verify了吧,它就位於Windows SDK的安裝目錄里:X:\Windows Kits\10\bin\10.0.18362.0\x86\UIAVerify\VisualUIAVerifyNative.exe,它上一級目錄里還有inspect.exe(前提是需要先獲取Windows SDK)。如果自己開發的WPF程式使用了Microsoft UI Automation,這將是一個十分重要的工具。就算沒有,Visual UI Automation Verify也可以查看到幾乎所有Windows UI的信息。雖然它有點古老,但勝在又快又實用。

8. ResXManager

ResXManager是用於管理resx資源文件的Visual Studio擴展,它提供了在Visual Studio中統一管理所有資源文件的用戶界面。小規模的程式用不上,但一旦資源和資源文件達到一定數量管理這些資源將十分痛苦,這時候ResXManager就必不可少。

9.結語

這篇文章主要介紹我開發WPF時常用的工具,其它還有些VB.NET To C#的代碼轉換器、SVG TO XAML、和PNG TO ICO等線上工具,都是用到時再網上搜的。還有很多.NET的工具我沒有列出來,可以參考下麵這篇文章:

10個用於C#.NET開發的基本調試工具


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • a>使用的軟體是vs2017和sqlServer2012,使用的ASP.NET控制項是sqlDataSource、dropDownlist和UpdatePanel. b>打開sqlServer,以window身份驗證登錄,建立省份表與市區表,如圖1.1和圖1.2 圖1.1 省份表 圖1.2 市區表 c ...
  • 前言 AutoWrapper是一個簡單可自定義全局異常處理程式和ASP.NET Core API響應的包裝。他使用ASP.NET Core middleware攔截傳入的HTTP請求,並將最後的結果使用統一的格式來自動包裝起來.目的主要是讓我們更多的關註業務特定的代碼要求,並讓包裝器自動處理HTTP ...
  • ViewComponent的一種使用方法 最近在一個自己新建的Core項目中想使用Html.Action(),突然發現這個方法已經沒了,下麵我按照官網(https://docs.microsoft.com/zh cn/aspnet/core/mvc/views/view components?vie ...
  • 一、什麼是ThreadPool 線程池(源碼) 1.線程池顧名思義,有我們的系統創建一個容器裝載著我們的線程,由CLR控制的所有AppDomain共用。線程池可用於執行任務、發送工作項、處理非同步 I/O、代表其他線程等待以及處理計時器。所以使用線程池不需要自己創建線程,而是通過線程池來創建和執行和管 ...
  • 配置規則 命令行配置提供程式 環境變數配置提供程式 文件配置提供程式 配置的讀取 自定義配置數據源 ASP.NET Core中的配置項可以通過命令行、環境變數、json/xml/ini配置文件來提供。 Web應用在生成主機時會調用CreateDefaultBuilder方法,這個方法按照下麵的順序添 ...
  • 下麵2個service中,方法體均一樣。只是其中service名,參數和url路徑不一樣。 原因是曾經對項目升級或是重構留下來的結果。 由於程式中N多處地方有引用,又不能合併它,刪除更不用說了。 因為,Insus.NET為了讓其更好維護,因此寫了另外一個Service來進行重構它們: 好了,博文中最 ...
  • 1、創建一個Asp.Net Core Web應用程式 1.1、打開VS2019 新建項目 1.2、選好項目位置後進入選擇界面,選擇Web應用程式 1.3、進去的頁面結構如下 Pages 文件夾:包含 Razor 頁面和支持文件。 每個 Razor 頁面都是一對文件: 一個 .cshtml 文件,其中 ...
  • 相關主頁 Prometheus https://prometheus.io/ grafana https://grafana.com/ 安裝Prometheus Linux 可以參考https://www.cnblogs.com/linkanyway/p/Configure-a-Prometheus ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...