WPF托盘图标自定义右键菜单。

原文地址:http://blog.csdn.net/doitplayer/article/details/72846381

根据此方法,可以实现WPF自定义托盘区右键菜单样式的功能,但存在一个问题,就是在弹出菜单后,点击桌面空白处,菜单无法收回。

因此,通过实验,如上问题,可以通过如下方式解决。

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

你可能感兴趣的:(WPF)