在本教程中,在代理模式下使用 GitHub Copilot 生成完整的 WinUI 3 应用— 一个包含备注列表的简单 笔记应用 、添加和删除条目的功能以及设置页面。 你将准确看到每个步骤中需要使用哪些指令,以及 WinUI 3 插件和 Learn MCP 服务器如何在整个过程中始终保持 Copilot 的准确性。
- 使用 Copilot 搭建 WinUI 3 项目基架
- 使用 Copilot 生成 XAML UI
- 使用 Copilot 添加业务逻辑
- 使用 Learn MCP 服务器添加 Windows 通知
- 使用 winapp CLI 打包应用
先决条件
- 使用 WinUI 3 插件和 Learn MCP Server 设置 GitHub Copilot — 请参阅 GitHub Copilot 的 Windows 开发设置
- 将 Visual Studio 2026 与 WinUI 应用程序开发工作负载配合使用
- 已安装 winapp CLI (
winget install Microsoft.winappcli)
第 1 部分:搭建项目基架
创建 WinUI 项目
创建新的 WinUI 3 项目:在 Visual Studio 中,选择 “文件>新建>项目”,按 WinUI 进行筛选,然后选择 “WinUI 空白应用”(打包) C# 模板。 将项目 NotesApp 命名并打开它。
打开 Copilot 代理模式并搭建结构基架
在 Visual Studio 中打开 Copilot 聊天面板并切换到 代理模式。 然后输入:
“我有一个名为 NotesApp 的新空白 WinUI 3 项目。 使用以下结构设置 MVVM 体系结构:具有 NavigationView 的 MainWindow、三页(备注、收藏夹、设置)、具有基本 ViewModel 类和 NotesViewModel 的 ViewModels 文件夹,以及具有 Id、标题、内容和 CreatedAt 属性的 Note 模型的 Models 文件夹。 使用 CommunityToolkit.Mvvm。”
Copilot 将创建文件夹结构,添加 CommunityToolkit.Mvvm NuGet 包引用,生成基类,并连接 NavigationView。 查看输出 - 如果有任何问题,请让 Copilot 在同一聊天会话中更正它。
小窍门
如果 Copilot 生成 Windows.UI.Xaml 命名空间而不是 Microsoft.UI.Xaml,则 WinUI 3 插件的自定义指令应捕获此问题。 如果看到它,提示 :“修复 Windows.UI.Xaml 的任何实例 — 这是 WinUI 3 项目,因此所有 XAML 命名空间都应使用 Microsoft.UI.Xaml。
第 2 部分:生成 UI
生成“备注”页
“为”备注“页生成 XAML。 它应该有一个 ListView,其中显示标题和内容预览的截断部分,底部有一个用于添加新笔记的文本框和按钮,并且每个项目上都有一个“删除”按钮。 将其绑定到 NotesViewModel。 采用 WinUI 3 控件和 Fluent Design 间距。
Copilot 生成绑定到 ViewModel 的 XAML。 要求它根据需要调整样式或布局 , 例如:
“使列表项使用带有微妙阴影的卡片样式,类似于 WinUI 库的卡片示例。
生成“设置”页
“生成具有深色/浅色主题切换开关的”设置“页,以及一个带有确认对话框的”清除所有笔记“按钮。 使用 ContentDialog 进行确认 , 而不是 MessageDialog。
WinUI 3 插件的指令引导 Copilot 使用 ContentDialog(正确的 WinUI 3 方法),远离已弃用的 MessageDialog 方法。
第 3 部分:添加业务逻辑
实现笔记持久性
“使用 System.Text.Json 在 NotesViewModel 中实现笔记持久性,以序列化和反序列化 Notes 集合到 ApplicationData.Current.LocalFolder 中的文件。 在启动时加载笔记,并在集合发生更改时保存。
Copilot 生成加载/保存逻辑。 请求它添加错误处理:
将 try/catch 添加到文件操作,并将错误记录到调试输出中。
实现主题切换
“在 SettingsViewModel 中实现主题切换。 切换发生更改时,使用正确的 WinUI 3 方法更新应用程序主窗口上的 RequestedTheme。
第 4 部分:添加 Windows 通知
Windows 通知需要包标识。 首先,使用 winapp CLI 进行设置:
winapp create-debug-identity --publisher "CN=NotesApp"
现在,请 Copilot 添加在保存笔记时触发的通知:
添加一个 Windows 应用通知,当笔记成功保存到磁盘时,该通知将显示“已保存笔记”的提示信息,并将笔记标题作为副标题显示。 使用 Windows App SDK 的 AppNotificationManager。
连接 Learn MCP 服务器后,Copilot 可以查找当前 AppNotificationBuilder API 并生成正确的通知代码。 它应生成如下内容:
var notification = new AppNotificationBuilder()
.AddText("Note saved")
.AddText(note.Title)
.BuildNotification();
AppNotificationManager.Default.Show(notification);
第 5 部分:打包应用
准备好分发或发布到 Microsoft 应用商店时,请生成正确的 MSIX 包:
winapp pack --output ./publish
这会生成一个已签名的 MSIX 包,可供旁加载或应用商店提交。 请求 Copilot 获取有关更新包清单的帮助:
“向我展示如何更新 Package.appxmanifest 以设置用于应用商店提交的显示名称、说明和发布者。”
总结
你已使用以下技术构建一个完整的 WinUI 3 便笺应用:
- 用于基架、UI 生成和业务逻辑的 Copilot 代理模式
- WinUI 3 插件 ,使 Copilot 在整个过程中保持新式、正确的 API
- 了解 MCP 服务器 以查找 Windows 应用 SDK 通知 API
- 用于包标识和 MSIX 打包的 winapp CLI
可选:将设备上的 AI 添加到应用
笔记应用功能齐全,但你可以通过添加完全在用户设备上运行的 AI 功能来进一步增强它。 Foundry Local 使这一点变得非常简单:它在本地运行语言模型并公开与 OpenAI 兼容的 API。
安装 Foundry Local 并下载模型
winget install Microsoft.AIFoundry.Local
foundry model run phi-4-mini
模型一启动,它就开始侦听 http://localhost:5272/openai/v1。
添加 NuGet 包
dotnet add package Azure.AI.OpenAI
向“备注”页添加“汇总”按钮
询问 Copilot:
“将”汇总“按钮添加到”备注“页。 单击后,它应使用 Azure.AI.OpenAI 包将所选笔记的内容发送到本地 AI 终结点 http://localhost:5272/openai/v1 ,并在 ContentDialog 中显示摘要。 模型名称为 phi-4-mini。
Copilot 生成 AzureOpenAIClient 调用和对话框 — OpenAI 兼容的 API 意味着代码看起来与云 API 调用完全相同,只是指向本地主机。
var client = new AzureOpenAIClient(
new Uri("http://localhost:5272/openai/v1"),
new ApiKeyCredential("foundry-local"));
var completion = await client.GetChatClient("phi-4-mini")
.CompleteChatAsync($"Summarize this note in 2 sentences: {note.Content}");
用户看到的
不需要 Internet 连接。 无 API 密钥。 该模型在其电脑上运行 - 快速、专用和免费。
小窍门
对于面向 Copilot+ 电脑的应用,可以将 Foundry Local 替换为 Phi 硅,以直接使用 NPU,从而实现更快速的推理。 API 图面不同(Windows AI API 而不是 OpenAI 兼容),但 Copilot 可以帮助你进行切换。
- 用于 Windows 开发的代理 AI 工具
- Foundry Local 概述 — 在本地 Windows 上运行任何模型
- Phi 硅 - Copilot+ PC 上的 NPU 加速推理
- Windows AI API 概述
- Windows 应用开发 CLI (winapp CLI)
- Windows App SDK 文档