C# WinUI 3アプリを作っていく途中で、躓いた部分を備忘録的に投稿します。今回はXamlで作成したフォームのサイズが変更された際のイベントを取得する手順です。
Xamlフォームのサイズが変更される際のイベント
メインウィンドウがXamlで作成されているWinUI 3プロジェクトでは、WinFormsのようにプロパティ画面でイベントを追加できないようなので、Xamlにタグでイベントを追加していきます。もちろん、xaml.csファイルでも追加できます。
Xamlにはウィンドウが閉じる際のイベントを追加していきます。
SizeChanged="Size_Changed"
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"
>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center" SizeChanged="Size_Changed">
</StackPanel>
</Window>
追加する場所は、下の画像をご覧ください。
Xaml.csファイルにイベントハンドラーを追加
タグに追加したSizeChangedイベントで指定した名前のハンドラーをxaml.csファイルに追加していきます。
private void Size_Changed(object sender, SizeChangedEventArgs e)
{
//ウィンドウのサイズ変更された際のイベント
}
引数 SizeChangedEventArgs を利用すると、変更前後のサイズを取得することができます。
//変更前のサイズ取得
Size PrevSize = e.PreviousSize;
//変更後のサイズ取得
Size NewSize = e.NewSize;
これで、Xamlで作成したウィンドウ(フォーム)のサイズが変更された際の処理を追加することが可能になります。
WinFormsであれば、プロパティで簡単に取得できるSizeChangedイベントも、WinUI3アプリの場合は、ほとんど手作業で取得している感があります。
まとめ
今回は、WinUI 3 アプリのウィンドウがサイズ変更される際のイベントを取得する方法を書きました。
WinFormsの時代とは違って、プロパティ画面でイベントを追加できる機能も無いので手動でイベントハンドラーを追加して取得します。
C#のWinUI 3アプリのウィンドウのサイズが変更された際のイベントを取得したい場合の参考になれば幸いです。
スポンサーリンク
最後までご覧いただき、ありがとうございます。