Control から派生し、ControlTemplate を使用して定義されたカスタム コントロールを開発しています。すべての付加機能を取り除いた後、コントロールには 4 つの TextBox のみが表示されます。
<Style TargetType="{x:Type local:MyControl}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type local:MyControl}">
<StackPanel Orientation="Horizontal">
<TextBox/>
<TextBox/>
<TextBox/>
<TextBox/>
</StackPanel>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
問題は、コントロールがキーボード フォーカスを受け取り、それ自体 (TextBox の 1 つではなく、すべてのテキスト ボックス) の周りにフォーカス四角形を描画できることです。これにより、ウィンドウ内のコントロールをナビゲートするときに不要なタブ ストップが追加されます。
カスタム コントロールで (スタイルのセッターを使用して) Focusible を false に設定すると問題は解決しますが、このような解決策は完全にはほど遠いものです。そのコントロールを使用する開発者が Focusible を true に設定すると、タブ ストップの動作が台無しになる可能性があるからです。
コントロールの GotKeyboardFocus イベントに応答して、コントロール全体がフォーカスを受け取ったときに最初の TextBox にフォーカスを与えることができますが、(Shift+Tab を使用して) タブで戻ると、これは正しく機能しません。最初の TextBox がフォーカスを受け取ります。最後の TextBox を最初にフォーカスする必要があります。
カスタム コントロール全体がキーボード フォーカスを受け入れないようにするにはどうすればよいでしょうか。