
1簡単な要求
- オープンソース制御ライブラリの使用
- Context Menuをコントロールに追加するように、XAMLでトレイメニューを宣言する
- メインフォームを開く、アプリケーションを終了するなどの一般的なコマンドをカプセル化します。

Terminal MACSにトレイメニューを追加し、最終的にトレイメニュー効果を実装しました。


2どうすればいい?
ステップ1:作成したWPFプロジェクトにHandyControlライブラリを追加し、以下をインストールします。

なぜHCコントロールライブラリを使うのかと思います。デモ効果をご覧ください:



通常のトレイ効果は十分ですよね。これらの効果を達成するためには、HCがカプセル化されているので、コード自体が必要なコードはあまりありません。
ステップ2:フォームにHandy Control名前空間を追加する
xmlns:hc="https://handyorg.github.io/handycontrol"
[Step 3]トレイメニューのキーを宣言する19 行のコード
<hc:NotifyIcon x:Name="NotifyIconContextContent"
Text="{markup:I18n {x:Static i18NResources:Language.AppTitle}}"
Visibility="Visible"
Icon="/Images/logo.ico">
<hc:NotifyIcon.ContextMenu>
<ContextMenu>
<MenuItem Command="hc:ControlCommands.PushMainWindow2Top" Header="{markup:I18n {x:Static i18NResources:Language.PushMainWindow2Top}}"/>
<MenuItem Command="hc:ControlCommands.ShutdownApp" Header="{markup:I18n {x:Static i18NResources:Language.Exit}}"/>
</ContextMenu>
</hc:NotifyIcon.ContextMenu>
<hc:Interaction.Triggers>
<hc:EventTrigger EventName="Click">
<hc:EventToCommand Command="hc:ControlCommands.PushMainWindow2Top"/>
</hc:EventTrigger>
</hc:Interaction.Triggers>
</hc:NotifyIcon>
上記のコードでは、トレイメニューは基本的に終了しています。
- NotifyIconはトレイメニューコントロールで、Textはトレイメニュー名を表示し、トレイアイコンにマウスを置き、ToolTipは文字列を表示し、一般的にアプリケーション名を表示します。

- hc NotifyIcon.ContextMenuはメニュー項目を宣言するために使用されます。この項目には現在、メインフォームを開く、アプリケーションを終了する2つのメニューが追加されています。この2つのメニューに対応するコマンドHCはカプセル化されています。- また、トレイメニューをクリックすると、アプリケーションのメインウィンドウがポップアップします。
[Step 4]メインフォームを手動で閉じるときは、終了せずに非表示にする
トレイメニューを追加した後、メインフォームを閉じるときにOnClosingイベントをオーバーライドしてメインフォームを直接閉じるのではなく非表示にしてください。
protected override void OnClosing(CancelEventArgs e)
{
this.Hide();
e.Cancel = true;
}
3その他の参考文献
更多 Demo 源码请参考 HandyControl
本文源码TerminalMACS