System.Windows.FormsのNotifyIconコントロールを使用するか、Windows APIが提供するNotify Icon APIを使用する必要があります。 WPFこのような同等の機能は提供されておらず、Microsoft Connectで数回要求されています。私はWPFアプリケーション内からSystem.Windows.Forms
NotifyIconコンポーネントを使用GitHubの上にコードを持っている、コードここhttps://github.com/wilson0x4d/Mubox/blob/master/Mubox.QuickLaunch/AppWindow.xaml.cs
で見ることができる
要約ビットである:
は偽ShowInTaskbar =と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ウィンドウが必要なわけではありません.WindowsアプリケーションをWPFアプリケーションに導入する最も便利な方法です(App.xamlを使用して定義された一般的なデフォルトエントリポイントです)。同様に、 WPF Wrapperまたはサードパーティ製のコントロールが必要です。SWFコンポーネントは、.NET Frameworkの一部であることからWPFサポートを備えています(現在および将来の.NET Frameworkのすべてのバージョンが構築されるため)。現在までに、いつでもSWFサポートが.NET Frameworkからすぐに削除されるという兆候はありません。
希望に役立ちます。
トレイアイコンを取得するには、3.0以前のFrameworkコンポーネントを使用する必要がありますが、Microsoftが説明したようにWPFの範囲内にはシステムトレイという概念はありません。 WPFはプレゼンテーションテクノロジであり、通知アイコンはオペレーティングシステム(「プレゼンテーション」ではなく)の概念です。
すべてのご提案ありがとうございます! WPF-NotifyIconは簡単なテストではかなり有望で痛みのないことを示しているので、私が行っていることです。 –