2013-07-17 47 views
1

在我的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; 
} 

回答

0

你應該創建一個類(比如WindowBase)繼承窗口類,然後在這個新的WindowBase類中應用上述功能,然後從此WindowBase類繼承所有新的Windows。我希望這會給你一個想法。

+0

是的。值得嘗試。 – Dinesh

相關問題