2013-07-17 20 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