2017-08-13 68 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>