缓慢切换TabItems

本文关键字:TabItems 缓慢 | 更新日期: 2023-09-27 18:21:28

我有一个包含多个TabItems的TabControl。偶尔,我会经历从一个选项卡切换到另一个选项卡的缓慢加载时间。首先想到的是服务,但在切换选项卡时,应用程序似乎没有调用服务

<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>),这是一个较慢的选项卡。我已经确保当我们切换到该选项卡时,代码不会调用该服务。那么,延迟的原因还有什么呢?

缓慢切换TabItems

这是TabControl的奇怪标准行为-它在切换时卸载项目,因此您必须稍微扩展它以在切换时保持缓存的TabItems,请参阅本文中的示例中的更多详细信息:防止WPF选项卡控件破坏其子