[WPF] 初期フォーカスをXAML上で設定する方法

[WPF] 初期フォーカスをXAML上で設定する方法

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上から設定することができます。

以上。

.NET Frameworkカテゴリの最新記事