2012-02-09 14 views
1


我有一個選項卡控件,有一整套可關閉的選項卡項目,每個選項卡項目都有一個具有可滾動部分的視圖(每個視圖都是相同的不同實例) ,那我遇到的問題是,如果你滾動一個標籤在其級聯到所有其他選項卡,我是遊蕩,如果有人能告訴我怎樣才能阻止這種情況發生?
感謝所有:)
WPF中的滾動條Tab項目問題

+0

什麼滾動文本框?可滾動的標籤頁中的控件是什麼? – 2012-02-09 03:53:55

回答

2

這是默認的行爲,如果你TabControl指定ContentTemplate .TabControls使用虛擬化技術,所以當你切換標籤頁,而不是創建一個新的,每次他們將重新使用的模板。

這意味着同一ScrollViewer被不管你是其上標籤使用。您可以通過添加一個Loaded事件您ScrollViewer證明這一點,你會看到它只被調用一次。解決此

一種方法是使用具有x:Shared="False"一個DataTemplate,所以它不會分享的模板。我還沒有測試過,看看是否有任何性能問題。

<DataTemplate x:Key="TestTemplate" x:Shared="False"> 
    <local:UserControl1 /> 
</DataTemplate> 

<Style x:Key="TabItemStyle" TargetType="{x:Type TabItem}"> 
    <Setter Property="Header" Value="Test" /> 
    <Setter Property="ContentTemplate" Value="{StaticResource TestTemplate}" /> 
</Style> 

... 

<TabControl ItemsSource="{Binding SomeCollection}" 
      ItemContainerStyle="{StaticResource TabItemStyle}" /> 

需要注意的是,這似乎是很挑剔......比如我需要把在UserControlScrollViewer或將無法正常工作。我還需要設置TabItem.ContentTemplate,而不是TabControl.ContentTemplate