System.Windows.FormsのNotifyIconコントロールを使用する必要があります。または、Windows APIが提供するNotify Icon APIを使用することもできます。WPFにはそのような同等の機能はありません。MicrosoftConnectで何度か要求されています。
System.Windows.Forms
WPFアプリケーション内からNotifyIconコンポーネントを使用するコードを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ウィンドウを厳密に必要とするわけではありません。これは、WPFアプリにウィンドウを導入するための最も便利な方法です(ウィンドウは通常、App.xamlを介して定義されるデフォルトのエントリポイントです)。同様に、 SWFコンポーネントは、.NET Framework(現在および将来のすべての.NET Frameworkバージョンが構築する.NET Framework)の一部であるため、WPFもサポートする.NET Frameworkインストールに存在することが保証されているため、WPFラッパーまたはサードパーティコントロールが必要です。これまでのところ、MicrosoftからSWFサポートが.NET Frameworkからすぐに削除されることを示す兆候はありません。
お役に立てば幸いです。
トレイアイコンを取得するために3.0より前のフレームワークコンポーネントを使用する必要があるのは小さなチーズですが、当然のことながらMicrosoftが説明しているように、WPFの範囲内にシステムトレイの概念はありません。WPFはプレゼンテーション技術であり、通知アイコンはオペレーティングシステム(「プレゼンテーション」ではない)の概念です。