2017-08-13 79 views
1

提供的TabControl上的TabControl我有很多的TabItem,每个TabItem的过程中我有很多的ScrollViewer,并在每个ScrollViewer中我的StackPanel的ScrollViewer - 我还如何重点内容

1)当我尝试向下滚动/起来,用鼠标 - >滚动工作正常

2)当我尝试点击StackPanel中的内容和润色/键盘的下降 - >滚动工作正常

但我的情况下改变的TabControl的TabItem的的,我无法使用键盘(上/下),它不起作用。

我必须提供.KeyDown + =,并注意哪个tabItem是活动的,或者我可以在触摸tabItem时关注tabItem的内容吗?

回答

0

如果我正确地读你的问题,你的观点看起来像

<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>