WPFでタブ順序を設定するにはどうすればよいですか? 一部のアイテムが展開され、一部が折りたたまれた ItemsControl があり、タブ移動時に折りたたまれたアイテムをスキップしたいと考えています。
何か案は?
WPFでタブ順序を設定するにはどうすればよいですか? 一部のアイテムが展開され、一部が折りたたまれた ItemsControl があり、タブ移動時に折りたたまれたアイテムをスキップしたいと考えています。
何か案は?
フォーム内の要素のタブ順序を明示的に設定する場合は、次の添付プロパティが役立ちます。
<Control KeyboardNavigation.TabIndex="0" ... />
私はそれがどのように使用されることを意図しているかについてもっと読む必要があるかもしれませんが、私はそれがあまり信頼できるとは思わなかったので「助けになると思われる」と言います。他の誰もこのプロパティについて言及していないので、私はこの半分焼きたての答えだけを投稿します。
Win RTでは、プロパティは単なる。であることに注意してくださいTabIndex="0"
。
XAML で要素にKeyboardNavigation.IsTabStopを設定すると、タブ シーケンスの要素をスキップできます。
KeyboardNavigation.IsTabStop="False"
展開された状態に基づいてこのプロパティを切り替えるトリガーを設定できます。
<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 つのコンボ ボックス間を移動できます。
ここには、コントロールやウィンドウなどの上部に、追加できるはるかに簡単な解決策があると思います。
KeyboardNavigation.TabNavigation="Cycle"
これにより、折りたたまれたタブも自動的に無視されます。
過去に私にとってうまくいった別の方法は、単純にすべての明示的なTabIndex
ステートメントを削除し、コントロールが XAML で宣言された順序を使用するようにすることです。
もちろん、これにはコントロールの順序を変更する必要がある場合があります。ただし、これは単純なコピー アンド ペースト操作です。