2012-01-25 87 views
1

我有一個TabControl與多個TabItems。從根本上說,我經歷了從一個標籤切換到另一個標籤的加載時間延遲。首先想到的是服務,但是應用程序在切換選項卡時似乎沒有調用服務。緩慢切換TabItems

<TabControl Visibility="{Binding MenuVisible}" Name="MenuControl" Grid.Row="1" > 

<TabItem Header="Business Rules Alerts" > 

    <Grid> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="*" /> 
      <RowDefinition Height="250" /> 
     </Grid.RowDefinitions> 

     <ContentControl cal:RegionManager.RegionName="GraphAlertsRegion" Margin="0" /> 

     <!-- Grid for UserListRegion and EventListRegion --> 
     <Grid Grid.Row="1"> 
      <Grid.ColumnDefinitions> 
       <ColumnDefinition Width="*" /> 
      </Grid.ColumnDefinitions> 

      <!-- EventList region --> 
      <ContentControl Grid.Column="0" cal:RegionManager.RegionName="EAlertsListRegion" Margin="0" /> 

     </Grid> 

    </Grid> 

</TabItem> 
    <TabItem Header="Business Rules"> 

     <Grid> 
      <Grid.RowDefinitions> 
      <RowDefinition Height=".5*" /> 
      <RowDefinition Height=".5*" /> 
     </Grid.RowDefinitions> 

     <ContentControl Grid.Row="0" cal:RegionManager.RegionName="BusinessRulesListRegion" Margin="0" /> 
     <Grid Grid.Row="1"> 
      <ScrollViewer VerticalScrollBarVisibility="Auto"> 
       <ItemsControl cal:RegionManager.RegionName="BusinessRulesWizardRegion" Margin="0" /> 
      </ScrollViewer> 

     </Grid> 

</TabItem> 

</TabControl> 

有沒有提高性能的方法? 特別地,

<ContentControl cal:RegionManager.RegionName="GraphAlertsRegion" Margin="0" /> 

是一個TreeView加一些圖(<charting:Chart.Series>),它是較慢的選項卡。當我們切換到該選項卡時,我確信代碼不會調用服務。那麼還有什麼可能是延誤的原因?

+0

看看在你的控件加載事件處理程序,如果你有任何。 – 0x4f3759df

回答

3

這是TabControl的怪異標準行爲 - 這是卸載項,同時切換,所以你需要稍微延長它來保持高速緩存的TabItems同時切換,在這篇文章中看到的例子更多細節:Keeping the WPF Tab Control from destroying its children

+0

在這種情況下,它並沒有真正的幫助... – Manolete

+0

你如何知道?你已經試過了嗎?我第一次使用TabCOntrol時遇到過同樣的問題,這對我有幫助。也許你觀察到與TabControl本身無關但與代碼有關的問題? – sll