我们已经为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>
后面的C#代码:
using Hardcodet.Wpf.TaskbarNotification
public void ShowStartupBalloon(string message)
{
// show balloon with built-in icon ie 'Info'
MyAppIcon.ShowBalloonTip(Properties.Resources.App_Title, message, BalloonIcon.Info);
}
通知显示为任务栏附近的小浮动窗口,但是(有时(并非总是))它们包含字符串“ microsoft.explorer.notification”和GUID。
我们希望消除这些问题,因为它们会使我们的客户感到困惑;许多人认为软件中发生了某种错误。有谁知道如何抑制这种情况,以便仅显示我们提供的通知文本?
答案 0 :(得分:3)
我也遇到了这个问题。根据我的收集,最下面的文字是Microsoft确保用户知道通知源以及随机程序不能模仿真实Windows通知的方式。包含ToolTipIcon(在您的情况下为信息图标)似乎可以触发这种情况。
因此,您可以通过不指定BalloonTipIcon来完全删除该文本,或者根本不定义该属性,或者将其定义为None:
MyAppIcon.ShowBalloonTip(Properties.Resources.App_Title, message, BalloonIcon.None);
当然,唯一的权衡是您的通知won't have an icon。
希望这会有所帮助。
答案 1 :(得分:0)
显示带有自动超时的图标:
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();
}