C# WPF .NET4.8.1 Toast通知显示异常:标题与归属区问题
解决Toast通知问题及实现自定义标题+文本方案
核心根源:未配置AppUserModelId
Windows Toast通知依赖AppUserModelId识别应用身份,Debug模式下未配置时会默认使用Dev-Debug,这是标题、分组显示该文本的直接原因。
1. 配置AppUserModelId
在App.xaml.cs的OnStartup方法中添加配置(应用启动的最早时机):
protected override void OnStartup(StartupEventArgs e) { base.OnStartup(e); // 设置唯一标识,格式建议为公司名.应用名 ToastNotificationManagerCompat.AppId = "YourCompany.YourAppName"; // 保留原有的激活事件监听 ToastNotificationManagerCompat.OnActivated += toastArgs => { ToastArguments args = ToastArguments.Parse(toastArgs.Argument); ValueSet userInput = toastArgs.UserInput; Current.Dispatcher.Invoke(delegate { MessageBox.Show("Toast activated. Args: " + toastArgs.Argument); }); }; }
配置后,通知中心分组会使用你设置的应用标识名称,自定义Header也会正常显示。
2. 修复归属文本(AttributionText)显示
AttributionText的显示有规则:
- 若Toast无自定义Header,会直接显示在通知底部
- 若保留Header,仅在通知中心点击展开Toast时,才会显示在底部区域
如果不需要Header,直接移除AddHeader调用即可让归属文本正常显示。
3. 实现仅显示自定义标题+简单文本的Toast
简化Toast创建代码,去掉不必要的元素:
public void ShowSimpleToast() { ToastContentBuilder builder = new ToastContentBuilder(); // 添加主标题(用Header样式突出显示) builder.AddText("自定义标题", hintStyle: ToastTextStyle.Header); // 添加正文消息 builder.AddText("这里是简单消息内容"); // 可选:添加点击参数 builder.AddArgument("Action", "ViewDetails"); // 显示通知 builder.Show(toast => { toast.ExpirationTime = DateTime.Now.AddDays(2); }); }
如果需要保留Header用于分组,确保已配置AppUserModelId,此时Toast会显示自定义Header标题,通知中心分组则使用应用标识名称。
额外注意事项
- 确保安装适配.NET 4.8.1的
Microsoft.Toolkit.Uwp.NotificationsNuGet包(建议稳定版如7.1.2) - 配置AppId后,Debug和Release模式会使用统一身份,避免临时标识问题
内容的提问来源于stack exchange,提问作者Marcel Grüger
相关产品推荐
相关产品推荐

