在WPF中设置Tab键顺序

时间:2008-12-11 15:40:49

标签: .net wpf tab-ordering keyboard-navigation

如何在WPF中设置标签排序?我有一个ItemsControl,其中一些项目已展开,一些项目已折叠,并希望在我选中时跳过折叠的项目。

有什么想法吗?

6 个答案:

答案 0 :(得分:85)

如果要显式设置表单中元素的Tab键顺序,以下附加属性应该有帮助:

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

我说“应该帮助”,因为我没有发现它非常可靠,但我可能需要阅读更多关于如何使用的信息。我只发布这个半假的答案,因为没有人提到这个属性。


请注意,在Win RT中,属性只是TabIndex="0"

答案 1 :(得分:59)

您可以通过在XAML中的元素上设置KeyboardNavigation.IsTabStop来跳过标签序列中的元素。

KeyboardNavigation.IsTabStop="False"

您可以设置一个触发器,根据展开状态切换此属性。

答案 2 :(得分:24)

<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键在这两个组合框中导航。

答案 3 :(得分:9)

我认为这里有一个更简单的解决方案, 在你的控制或窗口的顶部或其他任何地方,你可以添加:

KeyboardNavigation.TabNavigation="Cycle"

这也会自动忽略折叠的标签。

答案 4 :(得分:6)

过去对我有用的另一种选择是简单地删除所有明确的TabIndex语句,并让控件使用他们在XAML中声明的顺序发挥他们的魔力。

当然,这可能需要您重新排序控件。但这是一个简单的复制粘贴操作。

答案 5 :(得分:0)

您可以使用KeyboardNavigation.TabNavigation =“ None”完全跳过Tab键以进行特定控制。