[C#] 트레이 아이콘 만있는 WPF 응용 프로그램

나는 총 WPF 초보자이며 누군가가 트레이에 최소화되기 시작하는 응용 프로그램을 작성하는 방법에 대한 포인터를 줄 수 있는지 궁금합니다. 아이디어는 주기적으로 RSS 피드를 가져오고 새로운 피드가있을 때 Toaster-Popup을 만듭니다.

응용 프로그램에는 기본 창 (기본적으로 모든 피드 항목이 포함 된 목록)이 있어야하지만 기본적으로 숨겨져 있어야합니다.

XAML 및 WPF에 대해 읽기 시작했으며 App.xaml의 StartupUri가 기본 창을 가리켜 야한다는 것을 알고 있지만 SysTray 아이콘을 수행하고 기본 창을 숨기는 올바른 방법이 무엇인지 알 수 없습니다. 즉, 사용자가 창을 최소화하면 작업 표시 줄이 아니라 트레이로 최소화해야합니다.

힌트가 있습니까?



답변

WPF에는 NotifyIcon이 없습니다.

내 동료가이 무료 라이브러리를 사용하여 다음과 같은 효과를 얻었습니다.


답변

System.Windows.Forms에서 NotifyIcon 컨트롤을 사용해야하거나 Windows API에서 제공하는 Notify Icon API를 사용할 수도 있습니다. WPF 이와 동등한 기능을 제공하지 않으며 Microsoft Connect에서 여러 번 요청되었습니다.

System.Windows.FormsWPF 응용 프로그램에서 NotifyIcon Component 를 사용하는 GitHub 에 코드가 있습니다.이 코드는 https://github.com/wilson0x4d/Mubox/blob/master/Mubox.QuickLaunch/AppWindow.xaml.cs 에서 볼 수 있습니다

요약 비트는 다음과 같습니다.

ShowInTaskbar = False를 사용하여 WPF 창을 생성하고 표시 할 수없는 상태로로드합니다.

수업 수준에서 :

private System.Windows.Forms.NotifyIcon notifyIcon = null;

OnInitialize () 중 :

notifyIcon = new System.Windows.Forms.NotifyIcon();
notifyIcon.Click += new EventHandler(notifyIcon_Click);
notifyIcon.DoubleClick += new EventHandler(notifyIcon_DoubleClick);
notifyIcon.Icon = IconHandles["QuickLaunch"];

OnLoaded () 중 :

notifyIcon.Visible = true;

상호 작용 (위의 notifyIcon.Click 및 DoubleClick으로 표시) :

void notifyIcon_Click(object sender, EventArgs e)
{
    ShowQuickLaunchMenu();
}

여기에서 컨텍스트 메뉴, 팝업 창 등과 같은 WPF 컨트롤 및 API 사용을 재개 할 수 있습니다.

그렇게 간단합니다. 구성 요소를 호스팅하는 데 WPF Window가 정확히 필요하지는 않습니다. WPF 앱에 WPF 앱을 도입하는 가장 편리한 방법입니다 (창은 일반적으로 App.xaml을 통해 정의 된 기본 진입 점이므로). SWF 구성 요소는 .NET Framework (현재 및 미래의 모든 .NET Framework 버전을 기반으로 함)의 일부이므로 WPF를 지원하는 .NET Framework 설치에도 SWF 구성 요소가 존재하므로 WPF 래퍼 또는 타사 컨트롤이 필요하지 않습니다. 현재까지 Microsoft는 SWF 지원이 곧 .NET Framework에서 중단 될 것이라는 징후가 없습니다.

희망이 도움이됩니다.

트레이 아이콘을 얻으려면 3.0 이전 프레임 워크 구성 요소를 사용해야하지만 치즈가 WPF 범위 내에있는 시스템 트레이 개념은 없습니다. WPF는 프레젠테이션 기술이며 알림 아이콘은 운영 체제 ( “프레젠테이션”이 아님) 개념입니다.


답변

나는 최근에 이와 같은 문제가 있었다. 불행히도, NotifyIcon은 현재 Windows.Forms 컨트롤 일뿐입니다. 사용하려면 프레임 워크의 해당 부분을 포함시켜야합니다. 나는 그것이 당신이 얼마나 WPF 순수 주의자인지에 달려 있다고 생각합니다.

빠르고 쉬운 시작 방법을 원한다면 WinForms NotifyIcon에 전혀 의존하지 않는 코드 프로젝트 에서이 WPF NotifyIcon 컨트롤 확인하십시오 . 최신 버전은 저자의 웹 사이트NuGet 패키지 에서 사용할 수 있습니다 . 이것은 지금까지 나에게 가장 깨끗하고 깨끗한 방법 인 것 같습니다.

  • 텍스트가 아닌 풍부한 도구 설명
  • WPF 상황에 맞는 메뉴 및 팝업
  • 명령 지원 및 라우트 된 이벤트
  • 유연한 데이터 바인딩
  • OS에서 제공하는 기본 메시지가 아닌 풍부한 풍선 메시지

확인 해봐. 놀라운 샘플 앱도 함께 제공되며 사용이 매우 간편하며 멋진 Windows Live Messenger 스타일 WPF 팝업, 툴팁 및 상황에 맞는 메뉴를 사용할 수 있습니다. RSS 피드를 표시하는 데 적합합니다. 비슷한 용도로 사용하고 있습니다.


답변