1

私の 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);
        }
    }
}

Globals.cs でグローバルに宣言された NotifyIcon

public static class Globals
{
    public static NotifyIcon ni;
}
4

1 に答える 1