我目前正在尝试创建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
内存使用情况稳定,但是当我开始滚动列表时,内存使用量会急剧增加。但是,当向上滚动列表时,内存使用似乎没有增加。我尝试了很多方法来解决这个问题,但似乎无法纠正这个简单的问题。
有人可以帮我一下吗? 谢谢。