如果我正確地讀你的問題,你的觀點看起來像
<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>