94

如何在 WPF 中设置制表符排序?我有一个 ItemsControl,其中一些项目已展开,有些项目已折叠,并且希望在我进行选项卡时跳过折叠的项目。

有任何想法吗?

4

6 回答 6

92

如果您想为表单中的元素显式设置制表符顺序,以下附加属性应该会有所帮助:

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

我说“应该有帮助”,因为我发现它不是很可靠,尽管我可能需要阅读更多关于它打算如何使用的信息。我只发布这个半生不熟的答案,因为没有其他人提到这个属性。


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

于 2009-02-26T17:52:28.243 回答
65

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

KeyboardNavigation.IsTabStop="False"

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

于 2008-12-11T19:34:54.887 回答
25

<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 键浏览这两个组合框。

于 2010-05-25T03:16:45.433 回答
13

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

KeyboardNavigation.TabNavigation="Cycle"

这也会自动忽略折叠的选项卡。

于 2011-11-30T13:50:33.890 回答
6

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

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

于 2014-06-06T16:59:43.310 回答
0

您可以使用 KeyboardNavigation.TabNavigation="None" 完全跳过特定控件的 Tabbing。

于 2020-06-22T18:38:44.620 回答