首页 > 解决方案 > 滚动 ItemsControl 时内存使用增加

问题描述

我目前正在尝试创建一个 ItemsControl (ListView) 来滚动字符串列表(作为更复杂场景的演示)。这样做时,我注意到当最初滚动列表时,我的应用程序的内存使用量显着增加。

这是我用于 XAML 和代码隐藏的代码:

<ListView VirtualizingPanel.CacheLength="1" VirtualizingPanel.IsVirtualizing="True" VirtualizingPanel.VirtualizationMode="Recycling" x:Name="rowsList" ScrollViewer.CanContentScroll="True" VirtualizingPanel.ScrollUnit="Item" VirtualizingPanel.CacheLengthUnit="Item" VirtualizingPanel.IsContainerVirtualizable="True">
    <ListView.ItemTemplate>
        <DataTemplate >
            <TextBlock Text="{Binding}"/>
        </DataTemplate>
    </ListView.ItemTemplate>
    <ListView.Template>
        <ControlTemplate>
            <Border>
                <ScrollViewer>
                    <ItemsPresenter VirtualizingPanel.IsVirtualizing="True" VirtualizingPanel.VirtualizationMode="Recycling" VirtualizingPanel.IsContainerVirtualizable="True"/>
                </ScrollViewer>
            </Border>
        </ControlTemplate>
    </ListView.Template>
</ListView>

代码隐藏:

    public TestControl()
    {
        InitializeComponent();

        List<string> list = new List<string>();

        for (int i = 0; i < 10000; i++)
        {
            list.Add("testStringtestStringtestStringtestStringtestStringtestStringtestString");
        }

        rowsList.ItemsSource = list;
    }

这是来自 VS 诊断工具的 内存配置文件: 滚动时的内存配置文件

内存使用是稳定的,但是当我开始滚动列表时,内存使用会显着增加。但是,当向上滚动列表时,内存使用量似乎并没有增加。我已经尝试了很多方法来解决这个问题,但似乎无法纠正这个简单的问题。

有人可以为我解释一下吗?谢谢。

标签: wpfxaml

解决方案


推荐阅读