我有一个带有多个TabItem的TabControl。 Otooally我遇到从一个标签切换到另一个标签的加载时间很慢。首先想到的是服务,但是当切换选项卡时应用程序似乎没有调用服务。
<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 :(得分:3)
这是TabControl的奇怪标准行为 - 它是在切换时卸载项目,因此您必须稍微扩展它以在切换时保留缓存的TabItems,请参阅本文中的示例查看更多详细信息:Keeping the WPF Tab Control from destroying its children