2014-04-23 4 views
1

종료 "X"버튼이있는 WPF 응용 프로그램 만 있습니다. 응용 프로그램이 시작되면 시스템 트레이 아이콘이 시작됩니다. "숨기기"또는 "X"를 클릭 할 때 시스템 트레이 메인 창을 닫으려면 싶습니다. 이것을 어떻게 할 수 있습니까?닫기 시스템 트레이에 적용

+0

: [X]

코드 예제

을 누를 경우 당신은 또한 폐쇄 이벤트에서 처리 할 수 ​​있습니다. WPF NotifyIcon에 대한 Google 검색을 사용하면 풍부한 리소스를 찾을 수 있습니다. –

답변

1

Application에 대한 ShutdownModeOnExplicitShutdown으로 변경해야합니다. App.xaml에서 설정할 수 있으며 코드에서 Application.Shutdown() (아마도 일부 명시 적 사용자 명령을 기반으로)을 호출 할 때까지 앱이 작동 상태를 유지합니다. 트레이 아이콘에서 창을 다시 여는 방법은 특정 구현에 따라 다르지만 적어도 시작해야합니다.

1

외부 구성 요소 사용에 주저하지 않으면 WPF NotifyIcon을 권장합니다. 나는 그것을 사용했다. 그것은 간단하고 잘 작동합니다.

해당하는 WinForms 구성 요소에만 의존하지 않고 풍부한 툴팁, 팝업, 컨텍스트 메뉴 및 풍선 메시지를 표시하기 위해 WPF 프레임 워크의 여러 기능을 활용하는 완전히 독립적 인 컨트롤입니다. 당신은 아마 잘못된 키워드로 검색 한

public partial class MainWindow : Window 
{ 

    public MainWindow() 
    { 
     InitializeComponent(); 
     System.Windows.Forms.NotifyIcon ni = new System.Windows.Forms.NotifyIcon(); 
     ni.Icon = new System.Drawing.Icon("Main.ico"); 
     ni.Visible = true; 
     ni.DoubleClick += 
      delegate(object sender, EventArgs args) 
      { 
       this.Show(); 
       this.WindowState = WindowState.Normal; 
      }; 


    } 

    protected override void OnStateChanged(EventArgs e) 
    { 
     if (WindowState == WindowState.Minimized) 
      this.Hide(); 

     base.OnStateChanged(e); 
    } 
} 


/// <summary> 
/// Handles a click on the notify icon or its balloon. 
/// </summary> 
/// <param name="sender">Event source.</param> 
/// <param name="e">Event arguments.</param> 
private void HandleNotifyIconOrBalloonClicked(object sender, EventArgs e) 
{ 
    // Restore the Window 
    _window.WindowState = WindowState.Normal; 
}