C# 使用NotifyIcon创建的Windows通知显示;microsoft.explorer.notification“;和GUID

C# 使用NotifyIcon创建的Windows通知显示;microsoft.explorer.notification“;和GUID,c#,wpf,notifyicon,C#,Wpf,Notifyicon,我们已经为Windows编写了一个WPF桌面应用程序。应用程序在启动时启动,主要在后台运行,但有一个UI,可以通过系统托盘访问。有时应用程序需要通知用户一些事情,因此为此,我们使用NotifyIcon库生成通知。以下是相关代码: XAML: <mui:ModernWindow ... xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:tb="http://www.hardcodet.net/t

我们已经为Windows编写了一个WPF桌面应用程序。应用程序在启动时启动,主要在后台运行,但有一个UI,可以通过系统托盘访问。有时应用程序需要通知用户一些事情,因此为此,我们使用NotifyIcon库生成通知。以下是相关代码:

XAML:

<mui:ModernWindow
    ...
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:tb="http://www.hardcodet.net/taskbar" 
    ... >

    <tb:TaskbarIcon
            x:Name="MyAppIcon"
            ...
    </tb:TaskbarIcon>
</mui:ModernWindow>
通知在任务栏附近显示为小的浮动窗口,但(有时,不总是)它们包括字符串“microsoft.explorer.notification”和GUID


我们希望消除这些问题,因为它们会让我们的客户感到困惑;许多人认为软件中出现了某种错误。是否有人知道如何抑制该选项,以便仅显示我们提供的通知文本

我也遇到过这个问题。从我收集到的信息来看,底部的文本是微软确保用户知道通知来源,并且随机程序不能模拟真正的windows通知的方式。包含一个(在你的例子中是信息图标)似乎触发了这一点

因此,您可以通过不指定BallootTipicon、完全不定义属性或将其定义为无来完全删除该文本:

MyAppIcon.ShowBalloonTip(Properties.Resources.App_Title, message, BalloonIcon.None);
当然,唯一的折衷是你的通知


希望这有帮助。

显示带有自动超时的图标:

public static void ShowBalloon(string title, string body)
{
    // Show with icon
    NotifyIcon ni = new NotifyIcon() { Visible = true, Icon = Properties.Resources.Icon};

    // Timeout is deprecated since Vista
    ni.ShowBalloonTip(0, title, body, ToolTipIcon.None);

    // Dispose on event
    ni.BalloonTipClosed += (sender, e) => ni.Dispose();
}

你找到解决办法了吗?我在winform应用程序中偶尔遇到同样的问题。@Steve0212否,仍然存在此问题。您是否尝试更新Windows和
Hardcodet.NotifyIcon.Wpf
软件包?对于只包含
TaskbarIcon
的简单独立应用程序,我没有这个问题。它可能与windows本身有关,也可能与应用程序在后台或安装时出错有关。
public static void ShowBalloon(string title, string body)
{
    // Show with icon
    NotifyIcon ni = new NotifyIcon() { Visible = true, Icon = Properties.Resources.Icon};

    // Timeout is deprecated since Vista
    ni.ShowBalloonTip(0, title, body, ToolTipIcon.None);

    // Dispose on event
    ni.BalloonTipClosed += (sender, e) => ni.Dispose();
}