產生的程式碼是準備審查的,而不是自動準備好出貨。 在最後這一步中,你會練習偵測一個看似合理的框架錯誤,並在編譯之外進一步驗證 Task Tally。
故意測試助理
開始與助理的新對話,避免依賴先前提示的限制。 提問:
Add a confirmation dialog before deleting a task from my Windows XAML app.
Show only the using directives and the dialog construction code.
一位不受限制的助理可能會回來:
using Windows.UI.Xaml.Controls;
var dialog = new ContentDialog
{
Title = "Delete task?",
PrimaryButtonText = "Delete",
CloseButtonText = "Cancel"
};
這是一個 UWP 命名空間。
ContentDialog WinUI 3 也存在,這使得該錯誤在程式碼審查時很容易被忽略。
本專案的命名空間必須是:
using Microsoft.UI.Xaml.Controls;
var dialog = new ContentDialog
{
Title = "Delete task?",
PrimaryButtonText = "Delete",
CloseButtonText = "Cancel",
XamlRoot = this.XamlRoot
};
WinUI 3 的 ContentDialog 參考網址包含 microsoft.ui.xaml.controls。 UWP ContentDialog 參考使用 windows.ui.xaml.controls。
這就是為什麼「該型別存在於 Windows 文件中」是不夠的。 檢查框架、命名空間、版本和應用程式模型。
使用框架檢查產生的程式碼
當助理新增 Windows API 時,請用以下問題檢查:
| 檢查 | 應該注意哪些事項 |
|---|---|
| Framework | 這是 WinUI 3 和 Windows 應用程式 SDK 的說明文件嗎? |
| 命名空間 | UI 程式碼是否使用 Microsoft.UI.Xaml,而不是 Windows.UI.Xaml 或 System.Windows? |
| 版本 | 專案參考的 Windows 應用程式 SDK 版本中有 API 嗎? |
| 應用程式模型 | API 需要套件識別碼、應用程式功能,還是視窗初始化? |
| 線程 | 呼叫一定要在 UI 執行緒上執行嗎? 非同步工作是否會被等待? |
| 使用者體驗 (UX) | 這個情境有內建的 WinUI 控制項或模式嗎? |
| 可及性 | 生成的 UI 有名稱、標籤、鍵盤存取權限和可見焦點嗎? |
| 證據 | 你有建造、跑步並練習改變後的路徑嗎? |
請助理提供支持其選擇的 Learn URL,然後自己打開該網址。
驗證任務計數
進行最後一輪驗證:
- 刪除應用程式的本地資料,或重新安裝。 確認空狀態是否顯示,且只輸入空格會讓 新增任務 保持停用。
- 新增多個任務,標記一個完成,刪除另一個。 確認剩餘的數量是否更新,且正確的物品已被移除。
- 重新啟動應用程式。 確認任務標題和完成狀態已恢復。
- 將
TaskStorage.SaveAsync新增為if (System.Diagnostics.Debugger.IsAttached) throw new IOException("Test save failure.");的第一行,重新建置,然後在偵錯工具中執行該應用程式。 觸發儲存,並確認InfoBar回報的是失敗,而不是儲存成功。 然後移除臨時條件並重建。 - 使用 Tab 鍵和 Shift+Tab 鍵巡覽每個互動式元素。
- 使用螢幕閱讀器或 Windows 無障礙洞察來檢查名稱、角色和焦點順序。
- 調整應用程式視窗大小,測試淺色、深色及高對比主題,並建置 x64 版本,且不得出現編譯器、XAML、資料繫結或分析器警告。
精煉提示詞,而不只是程式碼
如果檢查失敗,請將更正和原因都保存在下一個提示中:
The generated code used Windows.UI.Xaml.Controls, which is the UWP
namespace. This project is WinUI 3. Replace it with the corresponding
Microsoft.UI.Xaml API, verify the API in the Windows App SDK reference,
build the x64 project, and explain why the original namespace was wrong.
這為助理提供了有用的證據,並強化了專案的界限。 如果專案壽命較長,可以在程式助理能讀取的倉庫指令中放入穩定的限制條件,例如框架、封包模型、目標架構和建置指令。
下一步
你已經建立了一個小型的 WinUI 3 應用程式,並練習了一個可以重複使用的工作流程:
提問→生成→建置→檢查→驗證→精進
繼續:
- 打造你的第一個 WinUI 應用程式 ,讓你以確定性、以程式碼為核心的 XAML、導航與檔案儲存入門。
- 在 WinUI 中進行資料綁定、相依注入,以及用於更大型 MVVM 架構的單元測試。
- WinUI 3 圖庫 用來驗證執行範例中的控制項與互動模式。
- Windows 應用程式 SDK API 參考以確認產生的 API 選擇。