WPF托盘图标自定义右键菜单。
程序员文章站
2022-06-07 15:13:25
...
原文地址:http://blog.csdn.net/doitplayer/article/details/72846381
根据此方法,可以实现WPF自定义托盘区右键菜单样式的功能,但存在一个问题,就是在弹出菜单后,点击桌面空白处,菜单无法收回。
因此,通过实验,如上问题,可以通过如下方式解决。
/// <summary>
/// 鼠标单击
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void notifyIcon_MouseClick(object sender, System.Windows.Forms.MouseEventArgs e)
{
//如果鼠标左键单击
if (e.Button == MouseButtons.Right)
{
System.Windows.Controls.ContextMenu NotifyIconMenu = (System.Windows.Controls.ContextMenu)this.FindResource("NotifyIconMenu");
NotifyIconMenu.IsOpen = true;
App.Current.MainWindow.Activate();//当点击托盘图标后,会使应用失去焦点,本句使应用程序重新获取焦点
}
}
同时添加App.Current.Deactivated += app_Deactivated;监测应用程序非活动事件。代码如下:
private void app_Deactivated(object sender, EventArgs e)
{
Console.WriteLine("应用程序失去了焦点!!!!!");
Popup menu = (Popup)gridMain.FindResource("NotifyIconMenu");
if (menu.IsOpen == true)
{
menu.IsOpen = false;
}
}
当应用程序失去焦点时,使菜单收回。