欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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;
            }
        }
当应用程序失去焦点时,使菜单收回。