4

WPF (MVVM、コード ビハインドなし) で、次の xaml があるとします。

<StackPanel>
    <Button>Normal 1</Button>
    <Button>Special</Button> <!--This button should not tab focus, but still focus via arrow keys-->
    <Button>Normal 2</Button>
</StackPanel>

デフォルトでは、(1) ボタン間をタブで移動するか、(2) ボタン間を上下矢印で移動できます。ボタンの 1 つ (特別なボタン)をタブでフォーカスできないようにしたいのですが、上/下でフォーカスできるようにします。を試しIsTabStop="False"ましたが、方向ナビゲーション (上/下矢印) を介してそのボタンにフォーカスすることもできません。

方向ナビゲーションを引き続き許可しながら、タブ ナビゲーションから 1 つのボタンを削除するにはどうすればよいですか? 他のすべてのコントロールでは、タブ移動と矢印移動は影響を受けません

IsTabStopKeyboardNavigation.TabNavigation、およびの組み合わせを試しましたがKeyboardNavigation.DirectionalNavigation、役に立ちませんでした。たぶん、私は適切な組み合わせを見つけていません。または、別のアプローチがあるかもしれません。アイデア?


編集:さて、賞金を追加しています。明確にするために、有効な方向ナビゲーションを維持しながらタブオーダーから削除されるように、MVVM を探しています。目標。コントロールの知識をウィンドウ (または同様のもの) にハードコーディングすることは受け入れられません。これは、一般的で再利用可能なソリューションである必要があります。次のようなもの: <Button AllowDirectionalNavigationButPreventTabNavigation="True"/>.

4

2 に答える 2

12

その選択肢はどうですか。特別なボタンを別のコンテナーに貼り付け、そのコンテナーに KeyboardNavigation.TabNavigation="None" を配置します。試してみたところ、必要なものを達成できるようです。

<StackPanel >
  <Button>Normal 1</Button>
  <StackPanel KeyboardNavigation.TabNavigation="None">
    <Button>Special</Button><!--This button should not tab focus, but still focus via arrow keys-->
  </StackPanel>
  <Button>Normal 2</Button>
</StackPanel>
于 2014-12-09T13:51:11.633 に答える