В моем приложении wpf у меня есть 4 окна Просмотр. Я написал следующий код, который сводит к минимуму мое главное окно в системном трее при минимизации этого окна. Но я хочу этот эффект для всех окон моего приложения (т. Е. Всего приложения wpf). Когда я перехожу из одного окна в другое, он должен показывать значок в системном трее для этого окна. Нужно ли писать один и тот же код для всех остальных окон? Или любой другой способ достичь этого результата?Свернуть все приложения WPF в системный лоток в C#
Код, написанный для минимизации главного окна в системный трей,
public partial class MonthView : MetroWindow
{
public DateTime SelectedDate { get; set; }
public MonthView()
{
InitializeComponent();
calMain.DisplayDate = DateTime.Today;
Globals._globalController = new AppController();
Globals._globalController.appTaskManager.setupLocal();
Globals._globalController.setMonthViewWindow(this);
Globals.ni = new NotifyIcon();
Globals.ni.Icon = new System.Drawing.Icon(@"D:\TimeSheetIcon.ico");
Globals.ni.Visible = true;
Globals.ni.Click +=
delegate(object sender, EventArgs args)
{
this.Show();
this.WindowState = WindowState.Normal;
};
}
protected override void OnStateChanged(EventArgs e)
{
if (WindowState == System.Windows.WindowState.Minimized)
{
this.Hide();
Globals.ni.BalloonTipTitle = "MonthView";
Globals.ni.BalloonTipText = "This is main window";
Globals.ni.Visible = true;
Globals.ni.ShowBalloonTip(500);
base.OnStateChanged(e);
}
}
}
NotifyIcon объявлены глобально в Globals.cs
public static class Globals
{
public static NotifyIcon ni;
}
Да. Стоит попробовать. – Dinesh