在 WPF 中,当我使用
Ctrl+Tab
在 TabControl
的选项卡之间切换时,事情按预期工作,在每个选项卡之间切换。但是,当父选项卡内有嵌套选项卡时,这些 nested 选项卡会与 Ctrl+Tab
而不是父选项卡进行切换。我希望 Ctrl+Tab
仅交换父选项卡,而不交换嵌套选项卡。有办法实现吗?
我尝试添加外部方法来强制控件切换父选项卡而不是嵌套选项卡,但我无法让任何东西起作用。
您可以抑制子选项卡项目上的事件,并通过执行类似的操作与父母一起重新引发该事件。
private void TabControl_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyboardDevice.Modifiers == ModifierKeys.Control
&& e.Key == Key.Tab)
{
ParentTabs.RaiseEvent(e);
e.Handled = true;
}
}
在 xaml 中,引用该处理程序:
<TabControl x:Name="ParentTabs">
<TabItem Header="Parent 1">
<TextBlock Text="Parent 1" />
</TabItem>
<TabItem Header="Parent 2">
<TabControl>
<TabItem Header="Sub 1" KeyDown="TabControl_KeyDown">
<TextBlock Text="Sub 1" />
</TabItem>
<TabItem Header="Sub 2" KeyDown="TabControl_KeyDown">
<TextBlock Text="Sub 2" />
</TabItem>
<TabItem Header="Sub 3" KeyDown="TabControl_KeyDown">
<TextBlock Text="Sub 3" />
</TabItem>
</TabControl>
</TabItem>
<TabItem Header="Parent 3">
<TextBlock Text="Parent 3" />
</TabItem>
</TabControl>