WPFプログラムにトレイメニューをすばやく追加したい

WPFプログラムにトレイメニューをすばやく追加したい

通常のトレイ効果は十分ですよね。これらの効果を達成するために必要なコードはほとんどありません

最后更新 2020/04/25 13:45
沙漠尽头的狼
预计阅读 2 分钟
分类
WPF
标签
.NET WPF トレイメニュー [トレイ]

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

Keep Exploring

延伸阅读

更多文章
同分类 / 同标签 2025/09/13

WPFからAvaloniaへの移行シリーズ:WPFプログラムをAvaloniaに移行する必要がある理由

ここ数年、当社のホストソフトウェアは主にWPFとWin Formで開発されてきました。これらのテクノロジーはWindowsプラットフォームで非常にうまく機能し、小規模なパイロット生産から今日の大規模なデリバリまでの段階を経てきました。しかし、ビジネスの成長と顧客のニーズの変化に伴い、単一のWindowsテクノロジースタックは私たちが乗り越えなければならないハードルになりました。

继续阅读
同分类 / 同标签 2025/01/26

WPFはカスタムXMLファイルで国際化を実現

この記事では、必要なNuGetパッケージのインストール、言語リストの動的取得、言語の動的切り替え、コードとxamlインターフェイスでの翻訳文字列の使用、開発者がWPFアプリケーションを簡単に国際化できるようにするソースコードへのリンクなど、WPFプログラムでカスタムXMLファイルを使用した国際化の方法について詳しく説明します。

继续阅读