在默认的TabControl
中,您可以使用 Ctrl + Tab 切换选项卡,但是,如果其中一个选项卡包含DataGrid
,则所有选项卡都将中断。例如,如果我有一个简单的TabControl
,除了TextBoxes之外什么都不包含:
<TabControl>
<TabItem Header="Tab1">
<TextBox/>
</TabItem>
<TabItem Header="Tab2">
<TextBox/>
</TabItem>
<TabItem Header="Tab3">
<TextBox/>
</TabItem>
</TabControl>
并反复按 Ctrl + Tab ,当前的Tab会循环:
Tab1> Tab2> Tab3> Tab1> ... etc
但是如果我要将几乎任何DataGrid
放在中间的一个标签中,例如:
...
<TabItem Header="Tab2"> <!--replacing 2nd tab content-->
<TabItem.Resources>
<x:Array x:Key="Items" Type="{x:Type Run}">
<Run Text="Foo"/>
<Run Text="Bar"/>
<Run Text="Baz"/>
</x:Array>
</TabItem.Resources>
<DataGrid ItemsSource="{StaticResource Items}"/>
</TabItem>
Ctrl + Tab 将卡住,无法越过所说的Tab:
Tab1> Tab2> Tab1> Tab2> ... etc
如何解决此问题?
我已经在IsTabStop="False"
和DataGrid
属性的几种组合中尝试了KeyBoardNavigation
,所有这些都不起作用或起反作用。
编辑(2):问题似乎主要出现在DataGrid
是TabItem
的第一个可聚焦子项时,例如内容:
<StackPanel>
<TextBox/>
<DataGrid ItemsSource="{StaticResource Items}"/>
</StackPanel>
几乎有效,直到用户选择DataGrid
。如果选择了网格,则下一个 Ctrl + Tab 会返回到第一个选项卡,而不是下一个。