2017-08-13 5 views
1

je fournir TabControl, sur TabControl j'ai beaucoup TabItem, et pendant chaque TabItem j'ai beaucoup ScrollViewer, et sur chaque ScrollViewer je StackPanelScrollViewer de WPF - Comment le contenu se concentrer

1) Lorsque je tente de faire défiler vers le bas/haut, avec la souris -> Scroll fonctionne bien

2) Lorsque je tente de cliquer sur le contenu de StackPanel et de toucher le haut/bas du clavier -> Scroll fonctionne bien

Mais je cas de changement TabItem de TabControl, Je ne peux pas utiliser le clavier (haut/bas), et ça ne marche pas.

Suis-je dois fournir .KeyDown + =, et l'attention TabItem est active, ou je pouvais concentrer le contenu de TabItem au cours touchant TabItem?

Répondre

0

Si je lis bien votre question, votre point de vue ressemble

<TabControl> 
    <TabItem Header="First tab"> 
     <ScrollViewer> 
      <StackPanel Height="2000"/> 
     </ScrollViewer> 
    </TabItem> 
    <TabItem Header="Second tab"> 
     <ScrollViewer> 
      <StackPanel Height="2000"/> 
     </ScrollViewer> 
    </TabItem> 
</TabControl> 

et que vous souhaitez mettre votre focus clavier sur le contenu de la TabItem chaque fois que l'onglet sélectionné est modifié. Dans ce cas, une solution possible serait de rendre le contenu focalisable et définir explicitement le focus du clavier chaque fois que les modifications de l'onglet sélectionné; qui est, faire quelque chose comme

<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 est donnée par

private void TabControlSelectionChanged(object sender, SelectionChangedEventArgs e) => 
    ((e.AddedItems[0] as TabItem)?.Content as ScrollViewer)?.Focus();