如何在Windows 10通知中心创建自定义快速操作按钮?
嘿James,当然有办法实现这个需求!在Windows 10里给你的应用添加自定义快速操作按钮到通知中心,其实主要靠UWP的通知API就能搞定,我给你一步步拆解:
实现步骤
1. 确认应用适配前提
首先得说清楚:这个方案原生支持UWP应用;如果你的应用是传统Win32程序,得先通过Desktop Bridge打包成MSIX格式,才能用上UWP的通知能力,后续步骤和UWP一致。
2. 编写快速操作按钮的Toast模板
快速操作按钮需要嵌套在Toast通知的XML模板里,你可以自定义按钮文字和触发行为。示例模板如下:
<toast> <visual> <binding template="ToastGeneric"> <text>你的应用名称</text> <text>点击按钮快速启动应用</text> </binding> </visual> <actions> <!-- 这里就是自定义的快速操作按钮 --> <action content="启动我的应用" arguments="launchFromQuickAction" activationType="Foreground"/> </actions> </toast>
参数说明:
activationType="Foreground":点击按钮时直接将应用启动到前台arguments:可以传递自定义参数,方便应用识别是从这个按钮启动的
3. 在应用中发送带按钮的Toast通知
以C#为例,在你的应用代码里加载模板并发送通知,这样通知就会常驻通知中心,按钮也会随之显示:
using Windows.UI.Notifications; using Windows.Data.Xml.Dom; // 加载Toast模板 XmlDocument toastXml = ToastNotificationManager.GetTemplateContent(ToastTemplateType.ToastGeneric); // 设置通知文本内容 XmlNodeList textNodes = toastXml.GetElementsByTagName("text"); textNodes[0].AppendChild(toastXml.CreateTextNode("你的应用名称")); textNodes[1].AppendChild(toastXml.CreateTextNode("点击按钮快速启动")); // 添加快速操作按钮 XmlElement actionsElement = toastXml.CreateElement("actions"); XmlElement launchAction = toastXml.CreateElement("action"); launchAction.SetAttribute("content", "启动应用"); launchAction.SetAttribute("arguments", "launchFromQuickAction"); launchAction.SetAttribute("activationType", "Foreground"); actionsElement.AppendChild(launchAction); toastXml.DocumentElement.AppendChild(actionsElement); // 创建并发送通知 ToastNotification toast = new ToastNotification(toastXml); ToastNotificationManager.CreateToastNotifier().Show(toast);
4. 处理按钮启动的特殊逻辑(可选)
如果需要区分应用是从快速操作按钮启动,还是常规启动,可以在App.xaml.cs的OnLaunched方法里读取启动参数:
protected override void OnLaunched(LaunchActivatedEventArgs e) { // 判断是否来自快速操作按钮 if (!string.IsNullOrEmpty(e.Arguments) && e.Arguments == "launchFromQuickAction") { // 在这里执行特殊逻辑,比如直接跳转到应用的某个功能页面 } // 常规启动逻辑... }
5. 关键注意事项
- 快速操作按钮和Toast通知绑定,一旦用户清除了这条通知,按钮就会消失。你可以在应用启动时、或者通过后台任务自动重新发送这条通知,确保按钮常驻。
- 记得在应用的
Package.appxmanifest里开启通知权限,否则通知无法正常发送。
内容的提问来源于stack exchange,提问作者James Stubbs
相关产品推荐
相关产品推荐

