2008-12-11 6 views
80

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

Любые идеи?

+0

Предлагаемый ответ Джесси - это способ пойти ... – 2008-12-12 10:20:59

+0

, который, по-видимому, является поведением по умолчанию? – 2013-02-06 11:22:44

ответ

55

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

KeyboardNavigation.IsTabStop="False" 

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

+0

Вы также можете использовать Focusable = "False", который удаляет его из фокуса клавиатуры, а также порядок табуляции. – 2011-07-28 23:51:32

+1

@Geoff Я сделал это с кучей кнопок, и это не сработало, просто fyi. – ToastyMallows 2013-06-07 16:00:41

-9

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

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

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

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

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


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

22

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

9

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

KeyboardNavigation.TabNavigation="Cycle" 

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

4

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

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

Смежные вопросы