缓慢切换TabItems

时间:2012-01-25 16:14:57

标签: c# wpf tabitem

我有一个带有多个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>),这是较慢的标签。我确保在切换到该选项卡时代码不会调用该服务。那还有什么可能是延迟的原因?

1 个答案:

答案 0 :(得分:3)

这是TabControl的奇怪标准行为 - 它是在切换时卸载项目,因此您必须稍微扩展它以在切换时保留缓存的TabItems,请参阅本文中的示例查看更多详细信息:Keeping the WPF Tab Control from destroying its children