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

原文地址: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;
            }
        }
当应用程序失去焦点时,使菜单收回。
  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值