【发布时间】:2019-11-13 12:11:04
【问题描述】:
在默认的TabControl 中,您可以使用Ctrl+Tab 切换选项卡,但是如果其中一个选项卡包含DataGrid,则所有选项卡都会中断。例如,如果我有一个简单的TabControl,只包含文本框:
<TabControl>
<TabItem Header="Tab1">
<TextBox/>
</TabItem>
<TabItem Header="Tab2">
<TextBox/>
</TabItem>
<TabItem Header="Tab3">
<TextBox/>
</TabItem>
</TabControl>
反复按Ctrl+Tab,当前Tab会循环:
Tab1 > Tab2 > Tab3 > Tab1 > ...等
但如果我将几乎任何 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 > ...等
我该如何解决这个问题?
我在DataGrid 上尝试了IsTabStop="False" 以及KeyBoardNavigation 属性的几种组合,所有这些都没有效果或适得其反。
Edit(2): 问题似乎主要出现在DataGrid 是TabItem 的第一个 可聚焦子元素时,例如内容:
<StackPanel>
<TextBox/>
<DataGrid ItemsSource="{StaticResource Items}"/>
</StackPanel>
几乎有效,直到用户选择DataGrid。如果接下来选择网格 Ctrl+Tab 则返回到第一个 Tab 而不是下一个。
【问题讨论】:
-
不确定你在说什么,我的 ctrl/tab 在其中一个选项卡中有 DG 时工作正常,可能是其他原因造成的!
-
@SamTheDev 我正在使用在 Windows 10 机器上运行的空 4.7.2 项目,问题中只包含 XAML 代码(粘贴为 Window 内容),您的设置是什么?
-
我猜也一样,只是粘贴了您的代码,三个标签,其中第三个是带有网格的标签,.net 4.7.2 on a win 10 1903。
-
@SamTheDev 尝试将网格放在第二个选项卡中。循环在遇到第一个网格时停止/重新启动 - 如果网格在最后一个选项卡中,您将无法判断它是在那里停止还是循环正常完成。
-
嗯,有趣,现在我看到了问题!
标签: c# wpf datagrid tabcontrol