2009-09-24 9 views
118

전 WPF 초보자입니다. 누군가 트레이에 최소화 된 응용 프로그램을 작성하는 방법을 알려줄 수 있는지 궁금합니다. 아이디어는 주기적으로 RSS 피드를 가져오고 새로운 피드가있을 때 Toaster-Popup을 생성한다는 것입니다.WPF 트레이 아이콘 만있는 응용 프로그램

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

XAML과 WPF에 대한 기사를 읽었으며 App.xaml의 StartupUri가 내 주 창을 가리켜 야한다는 것을 알고 있지만 적절한 방법은 시스템 트레이 아이콘을 수행하고 주체를 숨기는 것이 무엇인지 알지 못합니다. 창 (이것은 사용자가 창을 최소화 할 때 작업 표시 줄이 아니라 용지함까지 최소화해야 함을 의미합니다).

힌트가 있습니까?

+3

모든 제안에 감사드립니다. WPF-NotifyIcon은 빠른 테스트에서 매우 유망하고 고통 스럽다는 것을 보여주기 때문에 제가 함께 할 것입니다. –

답변

94
+1

환상적인 도서관. 그것을 활용하기 위해 잠깐 기다려라! –

+2

Drew, 링크가 여기에서 죽은 것처럼 보입니다. 이 라이브러리에 대한 대체 링크가 있습니까? 나는 빠른 검색을했으나 그 결과가 같은 프로젝트를위한 것인지를 판단 할 수 없었다. –

+0

@BradLarson, 사이트가 다운 된 것 같습니다. 어쨌든 프로젝트는 Nuget 패키지로 제공됩니다 (Dale의 답변 참조). –

47

나는 최근에 이와 동일한 문제가있었습니다. 안타깝게도 NotifyIcon은 현재 Windows.Forms 컨트롤 일뿐입니다. 사용하려는 경우 프레임 워크의 해당 부분을 포함해야합니다. WPF purist가 얼마나 많은가에 달려 있다고 생각합니다.

시작하기에 빠르고 쉬운 방법을 원하면이 WPF NotifyIcon control on the Code Project을 확인하십시오.이 도구는 WinForms NotifyIcon에 전혀 의존하지 않습니다. 최신 버전은 on the author's website이고 NuGet package으로 볼 수 있습니다. 이것은 지금까지 나에게 가장 좋고 깨끗한 방법처럼 보입니다.

  • 리치 풍선 메시지보다는 기본 메시지를 바인딩 오히려 텍스트보다

    • 풍부한 도구 설명
    • WPF 컨텍스트 메뉴와
    • 명령 지원 팝업 및 라우팅 이벤트
    • 유연한 데이터는 에 의해 제공 OS

    그것을 확인하십시오. 그것은 놀라운 샘플 애플 리케이션과 함께, 매우 사용하기 쉽고, 당신은 멋진 찾고 윈도우 라이브 메신저 스타일의 WPF 팝업, 툴팁 및 컨텍스트 메뉴를 가질 수 있습니다. RSS 피드를 표시하기에 완벽하며 비슷한 용도로 사용하고 있습니다.

  • +2

    2017 년 신규 사용자를 위해, 해당 nuget 패키지는 더 이상 사용되지 않지만 https://www.nuget.org/packages/Hardcodet.NotifyIcon.Wpf/ – mcy

    77

    System.Windows.Forms에서 NotifyIcon 컨트롤을 사용해야하거나 Windows API에서 제공하는 Notify Icon API를 사용할 수 있습니다. WPF 해당 기능을 제공하지 않으며 Microsoft Connect에서 여러 번 요청되었습니다.거짓하여 ShowInTaskBar = 갖는 WPF 윈도우를 생성

    :

    I은 ​​WPF 응용 프로그램 내에서 부품 NotifyIcon System.Windows.Forms 사용 GitHub의에 코드가 상기 코드 https://github.com/wilson0x4d/Mubox/blob/master/Mubox.QuickLaunch/AppWindow.xaml.cs

    에서 볼 수있는 여기에 요약 비트이다 보이지 않는 상태로로드됩니다.

    클래스 수준에서

    :

    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) :

    는 여기에서 당신은 그것은 그렇게 간단의 등 상황에 맞는 메뉴, 팝업 창,

    로 WPF 컨트롤 및 API의 사용을 재개 할 수 있습니다. 구성 요소를 호스팅하기 위해 WPF 창이 필요하지는 않습니다. WPF App에 응용 프로그램을 도입하는 가장 편리한 방법입니다 (일반적으로 Window는 App.xaml을 통해 정의 된 기본 진입 점이므로) 마찬가지로, WPF 래퍼 또는 타사 컨트롤이 필요합니다. SWF 구성 요소는 .NET Framework (현재 및 미래의 모든 .NET Framework 버전이 빌드 ​​됨)의 일부이기 때문에 WPF 지원도 포함하는 모든 .NET Framework 설치에서 제공됩니다. 현재까지 SWF 지원은 언제든지 .NET Framework에서 삭제 될 것이라는 징후는 없습니다.

    희망이 있습니다.

    트레이 아이콘을 얻기 위해 3.0 이전 프레임 워크 구성 요소를 사용해야하는 약간의 치즈이지만 Microsoft에서 설명한대로 당연히 WPF 범위 내에서 시스템 트레이에 대한 개념은 없습니다. WPF는 프레젠테이션 기술이며 알림 아이콘은 운영 체제 ("프레젠테이션"이 아닌) 개념입니다.

    +2

    과 다른 이름으로 게시되었습니다. 자세한 설명을 제공해 주셔서 감사합니다! –

    +2

    +1, 설명에 대한 답변 만 선택해야합니다. – ToastyMallows

    +1

    마지막 단락의 명성. 그것이 내가 알 필요가있는 바로 그 것이 었습니다. 그리고 그것은 좋은 개발자의 말을 듣는 간단하고 통찰력있는 세부 사항입니다. – series0ne

    관련 문제