В настоящее время я пытаюсь создать 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: Профиль памяти при прокрутке
Использование памяти стабильно, но когдаЯ начинаю прокручивать список, который значительно увеличивает использование памяти.Однако при прокрутке списка вверх использование памяти не увеличивается.Я пробовал много способов обойти это, но не могу исправить эту простую проблему.
Кто-нибудь может пролить свет на это для меня?Спасибо.