Как установить порядок вкладок в WPF? У меня есть ItemsControl, некоторые элементы которого развернуты, а некоторые свернуты, и я хотел бы пропустить свернутые, когда я использую табуляцию.
Любые идеи?
Как установить порядок вкладок в WPF? У меня есть ItemsControl, некоторые элементы которого развернуты, а некоторые свернуты, и я хотел бы пропустить свернутые, когда я использую табуляцию.
Любые идеи?
Ответы:
Вы можете пропустить элементы в последовательности вкладок, установив KeyboardNavigation.IsTabStop для элемента в XAML.
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.
Другая альтернатива, которая работала для меня в прошлом, - просто удалить все явные TabIndex
операторы и позволить элементам управления использовать порядок, который они объявлены в XAML, творить чудеса.
Это, конечно, может потребовать от вас изменения порядка элементов управления. Но это простая операция копирования и вставки.
Вы можете использовать KeyboardNavigation.TabNavigation = "None", чтобы полностью пропустить переход на вкладку для определенного элемента управления.