将整个WPF应用程序最小化到C#中的系统托盘
本文关键字:系统 WPF 应用程序 最小化 | 更新日期: 2023-09-27 18:23:35
在我的wpf应用程序中,我有4个视图窗口。我已经编写了以下代码,当最小化主窗口到系统托盘时,它会最小化该窗口。但是,我希望这个效果适用于我的应用程序中的所有窗口(即整个wpf应用程序)。当我从一个窗口移动到另一个窗口时,它也应该在该窗口的系统托盘中显示我的图标。我需要为所有其他窗口编写相同的代码吗?或者有其他方法可以达到这个结果吗?
为最小化系统托盘的主窗口而编写的代码,
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;
}
您应该创建一个继承Window类的类(比如WindowBase),然后在这个新的WindowBase类中应用上述功能,然后从这个WindowBase类继承所有新的Windows。我希望这能给你一个想法。