sh1’s diary

プログラミング、読んだ本、資格試験、ゲームとか私を記録するところ

WPF トーストの表示

WPF (.NET6) でトースト表示をテストしてみた内容を記録します。

かつてのトースト表示は、アプリケーションをパッケージ化したり証明書が必要であったりしたため、利用には面倒がありました。 現在は、かなりの面倒がなくなっており、ちょっとした通知の実装の際はおススメできるかもしれないです。

f:id:shikaku_sh:20220311163800g:plain
トースト通知

NuGet

  • .csproj を直接メモ帳で開く
    • TargetFrameworkWindowsnet*.0-windows10.0.17763.0 に変更
  • VisualStudio を再起動
  • Microsoft.Toolkit.Uwp.Notifications を追加

f:id:shikaku_sh:20220311163914p:plain:w500

f:id:shikaku_sh:20220311163848p:plain:w500

基本的な通知

var imageUri = System.IO.Path.GetFullPath(@"Images\info.png");

new ToastContentBuilder()
    .AddText("テストタイトル")
    .AddText("テキスト")
    .AddAppLogoOverride(new Uri(imageUri))
    .AddButton(new ToastButton().SetContent("OK"))
    .Show();

WPF の場合は、ローカルの画像をこのように単純なファイル指定で利用することができます。

トーストの UI は Add + 「コントロール」のメソッドを使っていくつもコンテンツを追加していくことができます。基本的には:

  • テキスト
  • 画像
  • ボタン
  • 効果音
  • テキストボックス、コンボボックスのような対話型コントロール

トーストによる通知は、Windows が通知した履歴を長期間保管しているものではないので、一度クリアしてしまうと再表示できないです。基本的には、アプリケーションをアクティブウィンドウとして利用していないときに、メッセージを配信する用途で利用されるくらいの想定みたいです。(Microsoft Docs 参照)

通知の明示的な削除

通知は、ユーザーがマニュアルで削除するか、以下のコマンドで削除するなど。

ToastNotificationManagerCompat.History.Clear();

サンプル

作成したサンプルを公開します。

GitHub - ToastTest

参考