WPFで初期フォーカスを設定したい
WPFの画面を作成しているときに、初期フォーカスを特定のコントロールに設定したいことがありました。その方法を調べたのでメモします。
focus()
Window の Loaded イベントでフォーカスしたいコントロールの focus()
を呼ぶ方法があります。
private void Window_Loaded(object sender, RoutedEventArgs e)
{
// 画面ロード時にフォーカスを設定する
this.textBox1.Focus();
}
この方法はコードビハインドを触るのでちょっと面倒ですが単純です。
XAML 上で FocusManager を使う
FocusManager Class (System.Windows.Input) | Microsoft Docs
FocusManager というクラスを使うと、XAML上で初期フォーカスを設定することができます。
<StackPanel FocusManager.FocusedElement="{Binding ElementName=textBox1}">
<TextBox x:Name="textBox1" />
</StackPanel>
上の例ではテキストボックスに初期フォーカスを設定しています。
テキストボックスに名前を付け、その要素に対してフォーカスするように、親要素に FocusManager
で設定を追加しています。
こうすることでいちいちコードビハインドを触らなくても、任意のコントロールに対して初期フォーカスをXAML上から設定することができます。
以上。
コメントを書く