如何在.NET C#中为Windows Toast通知设置自定义图标与应用名
解决Windows Toast通知归因区图标自定义问题
Windows Toast通知顶部的归因区(应用标识栏)图标并非通过Toast内容的视觉/操作元素直接修改,而是与你发送通知时指定的AppId关联的系统应用标识绑定。以下是针对不同类型应用的具体解决方案:
桌面应用(WPF/WinForms等非UWP)
方法1:通过快捷方式关联图标
- 右键创建你的应用快捷方式,进入「属性」→「更改图标」,选择你要在归因区显示的图标文件。
- 将该快捷方式移动到目录
%APPDATA%\Microsoft\Windows\Start Menu\Programs下,确保系统能识别到AppId对应的标识。 - 发送Toast时,代码中指定的
AppId必须与快捷方式的文件名(不含.lnk后缀)完全一致。
方法2:通过注册表注册AppId与图标
- 打开注册表编辑器,定位到
HKEY_CURRENT_USER\Software\Classes\AppUserModelId。 - 新建项,名称设为你的目标
AppId。 - 在该项下新建两个字符串值:
DisplayName:设置归因区显示的自定义应用名(也可通过Toast代码的Attribution覆盖)。IconUri:设置图标路径,格式为file:///C:/绝对路径/你的图标文件.ico。
UWP应用
直接修改项目中的Package.appxmanifest文件:
- 打开manifest编辑器,切换到「视觉资产」选项卡。
- 更新「Square44x44Logo」(通知专用图标)为你需要的图标文件,系统会自动将其关联到Toast归因区。
代码示例(桌面应用)
using Windows.UI.Notifications; using Microsoft.Toolkit.Uwp.Notifications; // 构建Toast内容 var toastContent = new ToastContent() { Visual = new ToastVisual() { BindingGeneric = new ToastBindingGeneric() { Children = { new AdaptiveText() { Text = "这是一条测试通知" } } } }, // 自定义归因区应用名(可选,若注册表已设置DisplayName也可省略) Attribution = new ToastAttributionText() { Text = "我的自定义应用" } }; // 创建并发送通知 var toastNotification = new ToastNotification(toastContent.GetXml()) { AppId = "MyCustomAppId" // 需与快捷方式名称或注册表项名称一致 }; ToastNotificationManager.CreateToastNotifier("MyCustomAppId").Show(toastNotification);
关键说明
归因区的图标由系统根据AppId匹配应用标识,无法通过Toast的XML或视觉元素直接设置——这也是你之前修改视觉/操作元素无效的原因。只要确保AppId关联的图标配置正确,发送通知时归因区就会自动显示对应图标。
内容的提问来源于stack exchange,提问作者user20138168
相关产品推荐
相关产品推荐

