Настройка порядка вкладок в WPF

Как настроить порядок вкладок в WPF? У меня есть ItemControl с некоторыми деталями, расширенными, а некоторые свалились и хотели бы пропустить свернутые, когда я табуляции.

Любые идеи?

Ответ 1

Вы можете пропустить элементы в последовательности вкладок, установив KeyboardNavigation.IsTabStop на элемент в XAML.

KeyboardNavigation.IsTabStop="False"

Вы можете настроить триггер, который будет переключать это свойство на основе расширенного состояния.

Ответ 2

Если вы хотите явно настроить порядок вкладок для элементов в своей форме, предполагается, что следующее прикрепленное свойство:

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

Я говорю "должен помочь", поскольку я не нашел его очень надежным, хотя мне, вероятно, нужно больше узнать о том, как он предназначен для использования. Я только отправляю этот полупеченный ответ, потому что никто не упомянул об этом свойстве.


Обратите внимание, что в Win RT свойство просто TabIndex="0".

Ответ 3

<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.

Ответ 4

Я думаю, что здесь есть гораздо более легкое решение, в верхней части вашего контроля или окна или что-то еще, вы можете добавить:

KeyboardNavigation.TabNavigation="Cycle"

Это также автоматически игнорирует сложенные вкладки.

Ответ 5

Другая альтернатива, которая работала для меня в прошлом, - это просто удалить все явные выражения TabIndex, и пусть элементы управления используют порядок, который они объявили в XAML, работают с их магией.

Это, конечно, может потребовать, чтобы вы изменили порядок своих элементов управления. Но это простая операция копирования-вставки.

Ответ 6

Также .NET 3.0 имеет класс, который автоматически устанавливает порядок вкладок, и вы можете переопределить это на основе разделов вашей формы.

 (new TabOrderManager(this)).SetTabOrder(TabOrderManager.TabScheme.AcrossFirst);