我提供了TabControl,在TabControl上我有很多TabItem,在每个TabItem中我有很多ScrollViewer,在每个ScrollViewer上我都有StackPanel
1)当我尝试向下/向上滚动时,使用鼠标 - >滚动效果很好
2)当我尝试点击StackPanel的内容并触摸键盘的上/下 - >滚动效果很好
但我改变了TabControl的tabitem,我不能使用键盘(向上/向下),而且它不起作用。
我是否必须提供.KeyDown + =,以及关注哪个tabItem处于活动状态,或者我可以在触摸tabItem时关注tabItem的内容?
答案 0 :(得分:0)
如果我正确地阅读了您的问题,您的观点看起来像
<TabControl>
<TabItem Header="First tab">
<ScrollViewer>
<StackPanel Height="2000"/>
</ScrollViewer>
</TabItem>
<TabItem Header="Second tab">
<ScrollViewer>
<StackPanel Height="2000"/>
</ScrollViewer>
</TabItem>
</TabControl>
并且您希望在更改所选标签时将键盘焦点设置为TabItem
的内容。如果是这样,一种可能的解决方案是使内容可聚焦,并在选定的选项卡发生变化时显式设置键盘焦点;也就是说,做一些像
<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>
其中TabControlSelectionChanged
由
private void TabControlSelectionChanged(object sender, SelectionChangedEventArgs e) =>
((e.AddedItems[0] as TabItem)?.Content as ScrollViewer)?.Focus();