2013-05-14 3 views
3

트레이에 최소화 할 수있는 WPF 응용 프로그램이 있습니다. 정상적으로 클릭하면 창이 다시 표시됩니다.WPF 트레이 아이콘 용 ContextMenu

이제 간단하게 만드는 방법을 궁금합니다. ContextMenu?

ContextMenu에는 onclick이 기능을 실행할 x 옵션이 채워 져야합니다. 지금은 'Exit_Click'메소드에 연결된 'Exit'항목 만 필요합니다. 내가 해봤

뭔가는 다음과 같습니다

ContextMenu menu = (ContextMenu)this.FindResource("NotifierContextMenu"); 
menu.IsOpen = true; 

menu

IsOpen 가치를 알 수 없습니다.

다른 예는 많은 것을 사용하는 것을 좋아합니다. One of them requires me to create a HostManager for some reason.

나는 단지 ContextMenu 만 있으면됩니다. 이것을 어떻게 할 수 있습니까?

+1

[This] (http://www.hardcodet.net/projects/wpf-notifyicon)는 거의 모든 것을 할 수 있습니다. –

+0

하지만 아무 것도하지 않기를 바란다 ... – Joetjah

+2

"그 모든 것"은 "상황에 맞는 메뉴를 포함 해 원하는 모든 것"을 의미한다. –

답변

6

@ H.B. 언급 된 Hardcodet's NotifyIcon은 WPF 작업 표시 줄 아이콘에 꽤 좋습니다. WPF로 상자 밖으로 나오지는 못하지만, Microsoft에서 수정을 기다릴 때보 다 문제를 해결할 수 있습니다. (실제로 해당 라이브러리를 표준에 추가해야합니다.)

이제 문제를 해결하십시오. 문제 (위의 해결책 사용) :

  • 솔루션
  • 가 하나있는 경우 소스 컨트롤에 추가하고 프로젝트에 (Hardcodet.Wpf.TaskbarNotification.dll)에 대한 참조를 추가 라이브러리를 구축 다운로드
당신이 필요한 같이 클릭 핸들러

<Window ... 
     xmlns:tb="http://www.hardcodet.net/taskbar" 
     ...> 
    ... 
    <Grid> 
    <tb:TaskbarIcon> 
     <tb:TaskbarIcon.ContextMenu> 
     <ContextMenu> 
      <MenuItem Click="Exit_Click" 
        Header="Exit" /> 
     </ContextMenu> 
     </tb:TaskbarIcon.ContextMenu> 
    </tb:TaskbarIcon> 
    ... 
    </Grid> 
</Window> 

및 MainWindow.xaml.cs를 :

는 이제 MainWindow.xaml에 당신은 단지 같은 것을 가질 수

private void Exit_Click(object sender, RoutedEventArgs e) { 
    Application.Current.Shutdown(); 
} 

내가 찾고 시간을 보내고 권장합니까 라이브러리의 소스 코드와 함께 제공되는 예제에서 사용 가능한 옵션을 익히십시오. 나에게 wpf가 도우미 라이브러리에 관해서는 너무 쉽다는 것을 믿어 라. qt 도우미 라이브러리를 사용해 보면 어딘가에 묻혀있는 것이 오픈 소스 도우미에서 무엇을 의미하는지 알 수 있습니다.

+0

좋습니다. 이제 아이콘을 마우스 오른쪽 버튼으로 클릭하면 메뉴가 표시됩니다. 나는 원래의 코드를 제거해야했다. (다른 2 개의 아이콘이 만들어 질 것이다.) 내 왼쪽 클릭을 해당 아이콘으로 어떻게 공격 할 수 있는지 알고 있습니까 (닫혀 있거나 최소화 된 경우 창을 복원하려면)? – Joetjah

+1

@Joetjah MVVM을 사용하므로 이벤트 처리기를 사용하지 마십시오. ''은'LeftClickCommand'와 같은 명령을 가지고 있으며, 내가 좋아하는 것을 좋아합니다.이벤트 핸들러를 사용하고 싶다면'TrayLeftMouseDown' 이벤트를 탭한 다음 이벤트 핸들러에서 윈도우 상태와 조치를 적절하게 확인하십시오. – Viv

+0

'LeftClickCommand'도 찾았지만 거기에 메서드를 넣을 수는없는 것 같습니다 ('Icon_Onclick()'). 'TrayLeftMouseDown'은 제가 찾고 있던 것과 정확히 같습니다. 고맙습니다! – Joetjah