You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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.Notifications NuGet包(建议稳定版如7.1.2)
  • 配置AppId后,Debug和Release模式会使用统一身份,避免临时标识问题

内容的提问来源于stack exchange,提问作者Marcel Grüger

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 01:32:04