滚动ItemsControl时内存使用增加

时间:2019-04-07 11:15:51

标签: wpf xaml

我目前正在尝试创建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诊断工具提供的内存配置文件: Memory profile whilst scrolling

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

有人可以帮我一下吗? 谢谢。

0 个答案:

没有答案