簡體   English   中英

只有托盤圖標的 WPF 應用程序

[英]WPF Application that only has a tray icon

我是一個完全的 WPF 新手,想知道是否有人能給我一些指導,如何編寫一個開始最小化到托盤的應用程序。 這個想法是它會定期獲取一個 RSS 提要,並在有新提要時創建一個 Toaster-Popup。

應用程序仍然應該有一個主窗口(本質上只是一個包含所有提要條目的列表),但默認情況下應該是隱藏的。

我已經開始閱讀有關 XAML 和 WPF 的內容,我知道 App.xaml 中的 StartupUri 必須指向我的主窗口,但我不知道執行 SysTray 圖標並隱藏主窗口的正確方法是什么(這也是意味着當用戶最小化窗口時,它應該最小化到托盤,而不是任務欄)。

任何提示?

您必須使用 System.Windows.Forms 中的 NotifyIcon 控件,或者您也可以使用 Windows API 提供的 Notify Icon API。 WPF 不提供此類等效項,並且已在 Microsoft Connect 上多次請求。

我在 GitHub 上有代碼,它使用 WPF 應用程序中的System.Windows.Forms NotifyIcon 組件,可以在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 應用程序的最便捷方式(因為 Window 通常是通過 App.xaml 定義的默認入口點),同樣,您不需要不需要 WPF 包裝器或第 3 方控件,因為 SWF 組件保證存在於任何也支持 WPF 的 .NET Framework 安裝中,因為它是 .NET Framework 的一部分(所有當前和未來的 .NET Framework 版本都基於它構建)。迄今為止,Microsoft 沒有任何跡象表明 .NET Framework 將很快取消對 SWF 的支持。

希望有幫助。

您必須使用 3.0 之前的框架組件來獲取托盤圖標有點困難,但可以理解的是,正如微軟所解釋的那樣,WPF 范圍內沒有系統托盤的概念。 WPF 是一種演示技術,而通知圖標是一種操作系統(不是“演示”)概念。

我最近遇到了同樣的問題。 不幸的是,NotifyIcon 目前只是一個 Windows.Forms 控件,如果你想使用它,你將不得不包含框架的那部分。 我想這取決於您是多少 WPF 純粹主義者。

如果您想要一種快速簡便的入門方法,請查看Code Project 上的這個WPF NotifyIcon 控件它根本不依賴 WinForms NotifyIcon。 作者的網站上似乎提供一個更新的版本,並作為NuGet 包提供 到目前為止,這對我來說似乎是最好和最干凈的方式。

  • 豐富的工具提示而不是文本
  • WPF 上下文菜單和彈出窗口
  • 命令支持和路由事件
  • 靈活的數據綁定
  • 豐富的氣球消息而不是操作系統提供的默認消息

一探究竟。 它還附帶了一個很棒的示例應用程序,非常易於使用,並且您可以擁有漂亮的 Windows Live Messenger 風格的 WPF 彈出窗口、工具提示和上下文菜單。 非常適合顯示 RSS 提要,我將它用於類似目的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM