wpf アプリケーションのキーボード ナビゲーションに問題があります。画面の幅の約 4 分の 1 を占めるメニュー項目のリストを含む水平スタックパネルがあります。
そのすぐ下に、画面の幅全体を占めるコンテンツ コントロールがあります。
コンテンツ コントロールは、強調表示されたメニュー項目に基づいて、読み込まれたユーザー コントロールを変更します。すべてのユーザー コントロールは、次の形式でセットアップされます。
<Grid>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid Grid.Column="0" />
<Grid Grid.Column="1" />
</Grid>
</Grid>
問題は、スタックパネルから下キーを押すと、そのすぐ下の内側のグリッド列にフォーカスしようとすることです。最初の列にはフォーカス可能な項目が含まれていますが、2 番目の列には含まれていません。これは、最初の列の真上にあるスタックパネルの最初の 2 つのメニュー項目では正常に機能しますが、最終的には 2 番目の列の真上にあるメニュー項目に到達し、この時点で下に移動できなくなります。
上記の xaml に示すように外側のグリッドを追加しましたが、これは役に立ちませんでした。グリッド (または内側のグリッド) で使用可能な最初のフォーカス可能な要素にフォーカスが移動しないのはなぜですか? また、フォーカスを列 1 に強制するにはどうすればよいですか?
ビューモデルでこれを行うことができると思いますが、かなりの数のページがすべて同様の問題に苦しんでいるため、すべてのキーボードナビゲーションを完全に書き直して制御するよりも簡単な解決策を望んでいました.
どんな助けでも大歓迎です。
更新: 最初のグリッドで focuasable を true に設定すると、ナビゲーションが機能し、列 1 で終了しますが、グリッドにフォーカスが与えられているため、最初にキーを押して「表示」されて何もしないことは明らかです。同様の動作が必要ですが、ナビゲーションがグリッドを列 1 に直接ジャンプするようにします。