目錄(6 節)
WinUI 3 桌面程式在跨顯示卡螢幕移動、縮放後,可能出現按鈕文字跑到其他控制項、文字消失的情況。WinUI 專案的 GitHub 問題回報 #12434 記錄一個企業桌面程式情境:Live Visual Tree 顯示的文字屬性正確,實際畫面卻錯亂;將程式指定使用高效能顯示卡可避開問題。這個案例說明,查到屬性值不等於畫面呈現正確,除錯仍要核對使用者看到的結果。
WinApp CLI 0.8 的實驗性 WinUI DevTools 可檢查執行中 WinUI 3 元件、來源和屬性,也能供 AI 代理讀取註記或試調屬性。對需要判斷問題來自程式設定或實際畫面的開發者,這些資料可縮小排查範圍;Microsoft 尚未公布獨立評測證明它能提高除錯速度或代理成功率。
一、WinApp CLI 0.8 的 WinUI DevTools 如何把畫面元件對回 XAML?
WinUI DevTools 可檢視執行中 WinUI 3 應用程式的視覺樹、元件屬性、繫結與版面資訊,並在能確認來源時顯示 XAML 檔案和行號。
WinApp CLI 是 Windows 應用程式開發命令列工具,原本涵蓋建立、執行、除錯與封裝等工作。0.8 版的新增重點之一,是讓檢查不只停在視窗外觀。WinUI 3 是 Windows 桌面應用程式使用的介面框架;XAML 則是常用來宣告介面元素與屬性的標記語言。DevTools 把執行畫面中的控制項、其階層與部分來源資訊呈現在同一個檢查流程裡。
Microsoft 公告列出的操作案例,是在執行中的應用程式選取按鈕,查看它在視覺樹的位置、屬性、繫結和版面資訊。若工具能將元素與專案來源確認相符,畫面也會顯示 XAML 檔案及行號。這可以縮小搜尋範圍,但不能保證每個元素都能準確對應來源。樣式、資源或複雜範本仍可能需要開發者回到專案確認。
這讓 WinApp CLI 0.8 的切入點落在「找到要檢查的介面元素」,不是替代理解所有設計意圖。若團隊也在評估代理如何使用工具和留下可檢查證據,可參考以 Microsoft Scope 檢視代理任務表現的方法。DevTools 提供的是應用程式當下可觀察的結構與狀態,仍需有人判斷這些資訊是否足以回答實際的版面問題。
二、代理如何從檢查資訊走到修改回饋?
代理可用命令列搜尋和讀取元件,暫時測試屬性變化,或讀取開發者附在介面元素上的註記,再回到原始碼提出修正。
第一個操作例子是定位元素。Microsoft 示範使用 winapp devtools inspect 查看目前介面,search 搜尋文字或控制項,再以 get-source 和 get-property 讀取來源及屬性。CLI 也能輸出 JSON 結構,供腳本或代理處理。實際使用時,最好先從檢查結果取用元素選擇器;若名稱重複,單靠「Save」等文字可能不能唯一指出目標。
試值也需安排驗證。WinApp CLI 的 問題回報 #1141 記錄一種繫結診斷落差:把繫結路徑改成不存在的名稱後,畫面文字消失,面板一度仍顯示舊路徑及「Works」;維護者後續在 #1159 完成修正。這個案例的結果提醒開發者,代理不能只讀面板狀態判定修改有效,還要核對畫面並重查繫結。即時試值本身也不會寫回來源,正式變更仍須修改 XAML。
「這些修改只在執行中有效,不會編輯來源;應用程式重新啟動後就會消失。」這是 Microsoft DevTools 指南對即時屬性調整的說明,表示正式修正仍須更新 XAML 並重新建置。
代理的工作因此可以拆成可追蹤的階段:檢查、選定目標、取得人類描述的修改註記、編輯來源、重新啟動或建置,最後驗證畫面與互動。關於代理工具串接測試與驗收方式,可延伸閱讀程式代理 Harness 的品質、成本與導入檢查。代理能讀到更多介面資料,不代表它自然知道產品應該採用哪種視覺設計;註記是否清楚、選擇器是否唯一,以及修改後是否通過專案原有檢查,仍會影響結果。
三、DevTools 和 UI Automation 各自負責哪一段?
DevTools 用來查看 WinUI 內部元素及屬性;UI Automation 則從使用者操作角度與應用程式互動,兩者可分別提供定位線索和操作驗證。
UI Automation(使用者介面自動化)能透過可存取的介面樹搜尋控制項、點擊或呼叫操作、等待狀態變化,並擷取畫面。WinApp CLI 的 winapp ui 即透過這類方式操作應用程式。DevTools 則深入 WinUI 3 元素,顯示屬性、繫結、版面及來源線索。兩套能力並列後,檢查與驗證可以分成不同問題處理:
| 工作 | WinUI DevTools | UI Automation |
|---|---|---|
| 查看 WinUI 視覺樹、屬性與版面 | 主要用途 | 查看自動化可存取的元素資訊 |
| 連結 XAML 來源 | 可在來源可確認時顯示 | 不是主要用途 |
| 模擬點擊、輸入或呼叫控制項 | 不以模擬使用者操作為主 | 主要用途 |
| 暫時測試 WinUI 屬性 | 可直接在執行中試值 | 不負責修改這些內部屬性 |
| 驗證修改後操作流程 | 可觀察元素狀態 | 可重播操作並檢查結果 |
選取目標也有實際回報。WinApp CLI 的 問題回報 #1223 記錄不同元素共用 AutomationId 時,DevTools 未提示歧義,便選取其中一個 x:Name 對應項目。開發者需再用視覺樹確認工具選到預期元件,之後以 UI Automation 操作並檢查畫面狀態;不要只依屬性值驗收。

四、實驗性預覽有哪些導入限制?
WinUI DevTools 仍是實驗性預覽,支援 C# 與 C++ WinUI 3 應用程式;它不會在 CI 或 Windows Sandbox 預設啟動,即時屬性修改也不會保存至原始碼。
Microsoft 表示 DevTools 支援以 C# 和 C++ 撰寫的 WinUI 3 專案。winapp run 在支援的 WinUI 專案中會預設啟動 DevTools,但在 CI 與 Windows Sandbox 不會預設開啟。這會影響團隊怎麼安排本機除錯與自動化工作:本機互動檢查可先試用,CI 則應沿用明確設定的測試與 UI Automation 流程,不能假定每次建置都會出現 DevTools 視窗。
預覽標示也有實際意義。Microsoft 說明功能和行為仍可能改變,因此正式導入前要確認目前版本、支援專案條件及指令選項。官方指南另指出,DevTools 視窗需要 Windows App SDK 1.7 或更新版本;若專案使用較舊版本,視窗可能無法開啟。這些條件應在試點環境先核對,不要等到開發流程依賴它後才發現環境不符。
「WinUI DevTools 處於實驗性預覽,功能與行為可能變更。」Microsoft 在 0.8 發布公告中如此界定目前階段;這是產品方的成熟度說明,並非獨立效能評測。
還有兩種常被混為一談的修改。第一,set-property 只改正在執行的畫面,關閉或重啟後會消失,必須自行把想保留的結果改回 XAML。第二,當屬性原本受資料繫結控制,直接指定新值可能讓執行中的繫結被取代;排查後需要回頭確認來源值與繫結是否仍符合預期。工具可協助觀察,但不能替代對資源、樣式與資料流的確認。
五、導入前先用一個介面問題驗證工作流程
先選一個可重現的 WinUI 3 介面問題,在隔離的開發分支檢查元件、記錄來源與屬性,測試代理修改,最後確認變更寫回 XAML 並通過既有互動測試。
- 核對專案類型。 確認專案是支援的 C#(C Sharp)或 C++(C Plus Plus)WinUI 3 類型。
- 核對執行環境。 檢查 Windows App SDK 版本及
winapp run的啟動方式。若要在 Sandbox 或 CI 執行,先閱讀相應設定,不要依賴預設啟動行為。 - 挑一個可重現的問題。 例如按鈕寬度、間距或文字位置不符預期。記下重現步驟、預期結果與目前畫面,避免一次交給代理含糊的「把介面變好看」。
- 確認元素與程式來源。 用 DevTools 選取元素,檢查視覺樹、屬性、繫結和 XAML 位置。若來源只有候選結果或無法確認,先人工核對,不讓代理直接修改猜測位置。
- 把試值與正式修改分開。 即時調整只用來找可能方向。決定採用後,由代理或開發者修改 XAML、樣式或資源,並檢查繫結是否仍在。
- 用既有測試驗收。 重新建置應用程式,再以 UI Automation 或團隊原有測試重播操作,確認版面、互動和相關狀態都符合預期。最後才結束註記並記錄問題是否解決。

這個試點的閱讀價值在於讓團隊看見交接成本落在哪裡:代理是否能穩定找到目標、註記能否轉成精確程式碼變更、測試能否發現副作用。Microsoft 的公告和文件說明了操作方式與限制,但目前沒有獨立證據可據此推算節省時間或成功率。若要比較導入前後,應以同一類任務記錄定位時間、人工改動次數、回歸問題及驗收結果,再決定是否擴大使用。
- WinUI DevTools 把執行中元件、屬性與可確認的 XAML 位置連起來,代理可藉命令列查詢並讀取修改註記。
- 即時試值不會寫回來源,繫結也可能被暫時取代;正式修改仍要更新 XAML、重新建置並驗證互動。
- 功能仍在實驗性預覽,應先用可重現的小任務測量定位與驗收成本,再評估是否納入團隊流程。
六、常見問題
它適合需要檢查執行中 WinUI 3 介面,並希望以命令列或代理串接檢視資訊的開發者;是否能改善團隊效率,仍需以自身任務試點確認。
常見問題
Q1:WinApp CLI 0.8 的 WinUI DevTools 可以直接幫 AI 代理改好介面嗎?
它可提供元素、屬性、來源和註記等操作線索,代理仍須判斷需求、修改 XAML 或其他來源,並經過建置與測試。工具不會自動驗收設計品質。
Q2:在 DevTools 調整的寬度或顏色會保存嗎?
不會。執行中調整是暫時試驗,應用程式重新啟動後即失效。要保留結果,需把修改寫入 XAML 或相關資源並重新建置。
Q3:WinUI DevTools 會取代 UI Automation 嗎?
不會。DevTools 偏向檢視 WinUI 元素內部資訊,UI Automation 負責模擬使用者操作和檢查互動流程。兩者可前後搭配。
Q4:在 CI 裡執行 winapp run 會自動打開 DevTools 嗎?
Microsoft 說明 DevTools 在 CI 不會預設啟動。CI 應使用明確配置的自動化驗證;若要調整 DevTools 行為,需先檢查當前版本支援的指令選項。
參考來源
- Microsoft Windows Developer Blog (2026). Windows App Development CLI v0.8: WinUI DevTools Experimental Preview
- 李建興 (2026). 微軟WinApp CLI新增WinUI DevTools,AI代理可檢查執行中的介面元件. iThome
- microsoft/microsoft-ui-xaml. (2026). Text renders in the wrong controls (glyph mix-up) on a secondary display attached to a different GPU (hybrid GPU), Issue #12434
- microsoft/WinAppCli. (2026). DevTools binding panel shows stale or wrong information after edits, Issue #1141
- microsoft/WinAppCli. (2026). DevTools silently chooses an x:Name when another element has the same AutomationId, Issue #1223