dullwhaleのメモ帳

何度も同じことを調べなくてよいように...

Windows App SDK(WinUI3)でTextBoxのテキスト変更を検知して処理する

意外と単体のサンプルコードが無い。 やりたいことからの逆引きとして残しておく。

基本的な方針

TextBox.TextChanged イベント (Windows.UI.Xaml.Controls) - Windows UWP applications | Microsoft Learn

実装例

Foo.xaml

<!-- 途中略 -->
<TextBox x:Name="InputTextBox" TextChanged="InputTextChanged"/>
<!-- x:Nameで指定した名前でFoo.xaml.csから参照できるようになる -->
<!-- TextChangedでイベントハンドラを登録 -->
<!-- 途中略 -->

Foo.xaml.cs

// 途中略
// クラス内部にInputTextBoxに関する定義を記述する必要はない。何も書かずに、いきなり参照できる。
private void InputTextChanged(object sender, TextChangedEventArgs e)
{
  // 文字列の変更がある度に、デバッグコンソールに書き込む。
  System.Diagnostics.Debug.WriteLine(InputTextBox.Text);
}
// 途中略

備考

テキスト変更ではなく、フォーカスが外れた際のイベントハンドラは、TextBoxの基底クラスであるUIElementのLostFocusで登録できる。

<TextBox LostFocus="InputLostFocus"/>

UIElement.LostFocus イベント (Windows.UI.Xaml) - Windows UWP applications | Microsoft Learn