single.php

C# WinUI 3アプリでウィンドウが閉じる際のイベントを取得する手順

C# WinUI 3アプリを作っていく途中で、躓いた部分を備忘録的に投稿します。今回はXamlで作成したフォームが閉じる際のイベントを取得する手順です。

Xamlフォームが閉じる際のイベント

WinUI 3プロジェクトでは、メインウィンドウがXamlで作成て設定されています。

WinFormsのようにプロパティ画面でイベントを追加できないようなので、Xamlにタグでイベントを追加していきます。もちろん、xaml.csファイルでも追加できます。

Xamlにはウィンドウが閉じる際のイベントを次の様に追加していきます。

<Window
  x:Class="WinUI3ImageViewer.MainWindow"
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  xmlns:local="using:WinUI3ImageViewer"
  xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
  xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
  mc:Ignorable="d"
  Closed="Window_Closed"
  >

</Window>

追加する場所は、下の画像をご覧ください。

Xaml.csファイルにイベントハンドラーを追加

Xamlに追加したタグで指定した名前のイベントハンドラーを追加していきます。インテリセンスの予想として表示される引数を使うと、WindowEventArgs の部分が異なるので注意してください。

private void Window_Closed(object sender, WindowEventArgs e)
{
  //ウィンドウが閉じた際のイベント
}

これで、Xamlで作成したウィンドウ(フォーム)が閉じる際の処理を追加することが可能になります。WinFormsアプリであれば、プロパティで簡単に取得できるClosedイベントも、WinUI3アプリの場合は、ほとんど手作業で取得している感があります。

まとめ

今回は、WinUI 3 アプリのウィンドウが閉じる際のイベントを取得する方法を書きました。

WinUI3プロジェクトを作成した場合、ウィンドウ(フォーム)部分はXamlで構築されるためVisualStudioのIDEでは画面を確認しながら作業ができません。

WinFormsの時代とは違って、プロパティ画面でイベントを追加できる機能も無いので手動でイベントハンドラーを追加して取得する場合が多い感じがします。

C#のWinUI 3アプリのウィンドウが閉じる際のイベントを取得したい場合の参考になれば幸いです。

スポンサーリンク

最後までご覧いただき、ありがとうございます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です