webdevqa.jp.net

WPFでタブの順序を設定する

WPFでタブの順序を設定するにはどうすればよいですか?展開されたアイテムと折りたたまれたアイテムを含むItemsControlがあり、タブで移動するときに折りたたまれたアイテムをスキップしたい。

何か案は?

88
Román

XAMLの要素に KeyboardNavigation.IsTabStop を設定すると、タブシーケンスの要素をスキップできます。

KeyboardNavigation.IsTabStop="False"

展開状態に基づいてこのプロパティを切り替えるトリガーを設定できます。

61
Jab

フォーム内の要素のタブ順序を明示的に設定する場合、次の添付プロパティが役立ちます。

<Control KeyboardNavigation.TabIndex="0" ... />

私はおそらくそれがどのように使用されるかについてもっと読む必要があるかもしれませんが、私はそれをあまり信頼できないと思ったので、「助けになると思います」と言います。他の誰もこのプロパティに言及していないので、私はこの中途半端な答えを投稿するだけです。


Win RTでは、プロパティはTabIndex="0"

87
Drew Noakes

<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つのコンボボックスをナビゲートできます。

24
Pankaj

ここでは、コントロールやウィンドウなどの上部に、はるかに簡単な解決策があると思います:

KeyboardNavigation.TabNavigation="Cycle"

これにより、折りたたみタブも自動的に無視されます。

10
AltF4_

過去に私のために働いていた別の選択肢は、すべての明示的なTabIndexステートメントを単に削除し、XAMLで宣言された順序をコントロールに使用させて、魔法をかけることです。

もちろん、これにはコントロールの並べ替えが必要になる場合があります。しかし、これは単純なコピーアンドペースト操作です。

6
Gustavo Mori