public MainWindowView() { InitializeComponent(); trayIcon = new NotifyIcon(); trayIcon.Visible = MainWindowViewModel.Instance.Settings.MinimizeToTray; // Wire up an event to watch for changes to the Minimize to Tray setting MainWindowViewModel.Instance.Settings.PropertyChanged += (s, e) => { if (e.PropertyName == "MinimizeToTray") { trayIcon.Visible = MainWindowViewModel.Instance.Settings.MinimizeToTray; } }; var icon = new Icon(Application.GetResourceStream(new Uri("pack://application:,,,/Resources/TroveTools.ico")).Stream); trayIcon.Icon = icon; trayIcon.BalloonTipIcon = ToolTipIcon.Info; trayIcon.BalloonTipText = Strings.MainWindowView_MinimizeBalloonTipText; trayIcon.BalloonTipTitle = Strings.MainWindowView_MinimizeBalloonTipTitle; trayIcon.Text = Strings.MainWindowView_MinimizeBalloonTipTitle; tipAction = RestoreWindow; trayIcon.BalloonTipClicked += (s, e) => tipAction?.Invoke(); trayIcon.MouseClick += (s, e) => { if (e.Button == MouseButtons.Left) { RestoreWindow(); } }; // Setup tray icon context menu var open = new ToolStripMenuItem(Strings.MainWindowView_OpenTroveTools, icon.ToBitmap()); open.Font = new Font(open.Font, System.Drawing.FontStyle.Bold); open.Click += (s, e) => RestoreWindow(); var quitImage = System.Drawing.Image.FromStream(Application.GetResourceStream(new Uri("pack://application:,,,/Resources/glyphicons-208-remove.png")).Stream); var quit = new ToolStripMenuItem(Strings.MainWindowView_QuitTroveTools, quitImage); quit.Click += QuitTroveTools; var menu = new ContextMenuStrip(); menu.Items.AddRange(new ToolStripItem[] { open, new ToolStripSeparator(), quit }); trayIcon.ContextMenuStrip = menu; }