コントロール テンプレート内にコントロールを持つ独自のコントロールを作成するときに、フォーカスを管理する適切な方法は何ですか?
ControlTemplate に 2 つの TextBox を持つ CustomControl があるとします。ユーザーおよび開発者として、次の動作を期待します。
customControl.Focus() を呼び出すと、テンプレートの最初の TextBox がフォーカスを受け取る必要があります。
Tab / Shift+Tab を使用してフォーカスを前後に移動すると、次のように動作することが期待されます。
2.1 ユーザーが、customControl の前にコントロールにフォーカスがある状態で Tab キーを押すと、フォーカスは customControl の最初のテキスト ボックスに移動する必要があります。
2.2 ユーザーがカスタム コントロールの最初のテキスト ボックスにフォーカスがある状態で Shift+Tab を押すと、フォーカスは customControl の前の任意のコントロールに移動する必要があります。
以下、私はすでに試しました:
a. CustomControl を Focusable=false に設定すると、条件 2 が有効になりますが、条件 1 は無効になります。
b. StackOverflow では、コントロール テンプレート内のコントロールにフォーカスを移動する方法に関する質問が何度も出てきます。常に次の解決策を提案します:
<Trigger Property="IsFocused" Value="True">
<Setter TargetName="PART_TextBox1" Property="FocusManager.FocusedElement" Value="{Binding ElementName=PART_TextBox1}" />
</Trigger>
このソリューションは条件 1 と 2.1 を有効にしますが、条件 2.2 を無効にします。
ご協力いただきありがとうございます :)