WPF没有自带的通知栏图标组件,需要引用Windows类库,具体代码如下:

public MainWindow()
{
InitializeComponent();
icon();
wsl = WindowState.Minimized;
}
#region 通知栏

WindowState wsl;
System.Windows.Forms.NotifyIcon notifyIcon = null;

private void icon()
{
this.notifyIcon = new System.Windows.Forms.NotifyIcon();
this.notifyIcon.BalloonTipText = "ECMS 服务正在运行..."; //设置程序启动时显示的文本
this.notifyIcon.Text = "ECMS 服务";//最小化到托盘时,鼠标点击时显示的文本
this.notifyIcon.Icon = new System.Drawing.Icon("./logo_48X48.ico");//程序图标
this.notifyIcon.Visible = true;

//右键菜单--打开菜单项
System.Windows.Forms.MenuItem open = new System.Windows.Forms.MenuItem("Open");
open.Click += new EventHandler(ShowWindow);
//右键菜单--退出菜单项
System.Windows.Forms.MenuItem exit = new System.Windows.Forms.MenuItem("Exit");
exit.Click += new EventHandler(CloseWindow);
//关联托盘控件
System.Windows.Forms.MenuItem[] childen = new System.Windows.Forms.MenuItem[] { open, exit };
notifyIcon.ContextMenu = new System.Windows.Forms.ContextMenu(childen);

notifyIcon.MouseDoubleClick += OnNotifyIconDoubleClick;
this.notifyIcon.ShowBalloonTip(1000);
}

private void OnNotifyIconDoubleClick(object sender, EventArgs e)
{
/*
* 这一段代码需要解释一下:
* 窗口正常时双击图标执行这段代码是这样一个过程:
* this.Show()-->WindowState由Normail变为Minimized-->Window_StateChanged事件执行(this.Hide())-->WindowState由Minimized变为Normal-->窗口隐藏
* 窗口隐藏时双击图标执行这段代码是这样一个过程:
* this.Show()-->WindowState由Normail变为Minimized-->WindowState由Minimized变为Normal-->窗口显示
*/
this.Show();
this.WindowState = WindowState.Minimized;
this.WindowState = WindowState.Normal;
}

private void Window_StateChanged(object sender, EventArgs e)
{
//窗口最小化时隐藏任务栏图标
if (WindowState == WindowState.Minimized)
{
this.Hide();
}
}

private void ShowWindow(object sender, EventArgs e)
{
this.Visibility = System.Windows.Visibility.Visible;
this.ShowInTaskbar = true;
this.Activate();
}

private void HideWindow(object sender, EventArgs e)
{
this.ShowInTaskbar = false;
this.Visibility = System.Windows.Visibility.Hidden;
}

private void CloseWindow(object sender, EventArgs e)
{
System.Windows.Application.Current.Shutdown();
}

#endregion


WPF 通知栏图标和右键菜单_通知栏