如果我正确地读你的问题,你的观点看起来像
<TabControl>
<TabItem Header="First tab">
<ScrollViewer>
<StackPanel Height="2000"/>
</ScrollViewer>
</TabItem>
<TabItem Header="Second tab">
<ScrollViewer>
<StackPanel Height="2000"/>
</ScrollViewer>
</TabItem>
</TabControl>
,你想,只要所选择的选项卡改变了你的键盘焦点设置为TabItem
内容。如果是这样,一种可能的解决方案是使内容可以聚焦并且每当选择的标签改变时明确地设置键盘焦点;也就是说,在TabControlSelectionChanged
由
private void TabControlSelectionChanged(object sender, SelectionChangedEventArgs e) =>
((e.AddedItems[0] as TabItem)?.Content as ScrollViewer)?.Focus();
给出这样做
<TabControl SelectionChanged="TabControlSelectionChanged">
<TabItem Header="First tab">
<ScrollViewer>
<StackPanel Height="2000" Focusable="True"/>
</ScrollViewer>
</TabItem>
<TabItem Header="Second tab">
<ScrollViewer>
<StackPanel Height="2000" Focusable="True"/>
</ScrollViewer>
</TabItem>
</TabControl>