WPFでタブの順序を設定するにはどうすればよいですか?いくつかのアイテムが展開され、いくつかが折りたたまれたItemsControlがあり、タブで移動しているときに折りたたまれたものをスキップしたいと思います。
何か案は?
WPFでタブの順序を設定するにはどうすればよいですか?いくつかのアイテムが展開され、いくつかが折りたたまれたItemsControlがあり、タブで移動しているときに折りたたまれたものをスキップしたいと思います。
何か案は?
回答:
XAMLで要素にKeyboardNavigation.IsTabStopを設定することにより、タブシーケンスの要素をスキップできます。
KeyboardNavigation.IsTabStop="False"
展開された状態に基づいてこのプロパティを切り替えるトリガーを設定できます。
フォームの要素のタブ順序を明示的に設定する場合は、次の添付プロパティが役立つはずです。
<Control KeyboardNavigation.TabIndex="0" ... />
私はそれが非常に信頼できるとは思わなかったので、私は「助けになっていると思います」と言いますが、おそらくそれがどのように意図されているかについてもっと読む必要があります。他に誰もこのプロパティについて言及していないので、私はこの半分焼きたての答えを投稿します。
Win RTでは、プロパティは単にであることに注意してくださいTabIndex="0"
。
<DockPanel Panel.ZIndex="2">
は、トップレベルパネルのエントリポイントを注文するのに役立ちます。
<Control KeyboardNavigation.TabIndex="0" ... />
完全に正常に動作します...たとえば-
<ComboBox Height="23"
Margin="148,24,78,0"
Name="comboBoxDataSet"
VerticalAlignment="Top"
SelectionChanged="comboBoxDestMarketDataSet_SelectionChanged"
DropDownOpened="comboBoxDestMarketDataSet_DropDownOpened"
KeyboardNavigation.TabIndex="0" />
<ComboBox Height="23"
Margin="148,56,78,0"
Name="comboBoxCategory"
VerticalAlignment="Top"
SelectionChanged="comboBoxDestCategory_SelectionChanged"
DropDownOpened="comboBoxDestCategory_DropDownOpened"
KeyboardNavigation.TabIndex="1" />
Tabキーを使用して、これら2つのコンボボックス間を移動できます。
過去に私のために機能していた別の代替策は、すべての明示的なTabIndex
ステートメントを単に削除し、XAMLで宣言されている順序をコントロールが使用できるようにすることです。
もちろん、これにより、コントロールの順序を変更する必要がある場合があります。しかし、これは単純なコピーと貼り付けの操作です。
KeyboardNavigation.TabNavigation = "None"を使用して、特定のコントロールのタブを完全にスキップできます。