| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 | using System;using System.Windows;using System.Windows.Controls;using System.Windows.Media;using Hardcodet.Wpf.TaskbarNotification;namespace MECF.Framework.Common.NotifyTrayIcons{    public class ShowWindowNotifyIcon: TaskbarIcon    {        public event Action<bool> ShowMainWindow;        public event Action ExitWindow;        public ShowWindowNotifyIcon(string windowName, ImageSource icon)        {                         ContextMenu menu = new ContextMenu();            MenuItem item = new MenuItem();            item.Header = "Show " + windowName;            item.Click += ClickShow;            menu.Items.Add(item);            item = new MenuItem();            item.Header = "Hide " + windowName;            item.Click += ClickHide;            menu.Items.Add(item);            item = new MenuItem();            item.Header = "-";            menu.Items.Add(item);            item = new MenuItem();            item.Header = "Exit ";            item.Click += ClickExit;            menu.Items.Add(item);            this.ContextMenu = menu;            this.TrayMouseDoubleClick += ShowWindowNotifyIcon_TrayMouseDoubleClick;             ToolTipText = "Double-click for window, right-click for menu";            IconSource = icon;        }        private void ShowWindowNotifyIcon_TrayMouseDoubleClick(object sender, RoutedEventArgs e)        {            if (ShowMainWindow != null)                ShowMainWindow(true);        }        public void ShowBallon(string title, string text)        {            ShowBalloonTip(title, text, BalloonIcon.Info);        }        private void ClickHide(object sender, RoutedEventArgs e)        {            if (ShowMainWindow != null)                ShowMainWindow(false);        }        private void ClickShow(object sender, System.Windows.RoutedEventArgs e)        {            if (ShowMainWindow != null)            {                ShowMainWindow(true);            }        }        private void ClickExit(object sender, System.Windows.RoutedEventArgs e)        {            if (ExitWindow != null)            {                Application.Current.Dispatcher.Invoke(() => { ExitWindow(); });            }        }    }}
 |