Я хочу добавить около 600 изображений в свою коллекцию, чтобы отображать их в Listview, который виртуализируется с помощью Itemsstackpanel. Если я не ошибся с виртуализацией, можно загружать большие наборы данных. Моя проблема в том, что коллекция может содержать только около 150 изображений, а затем я получаю исключение OutOfMemory. Есть ли что-то еще для включения виртуализации или проблема в том, что моя Коллекция вызывает событие propertyChanged для каждого добавленного изображения?
Выдается ошибка:
await pdfPage.RenderToStreamAsync(Imagestream);
и как я добавляю в свою коллекцию:
for (uint i = convertedPageString; i < 200 + convertedPageString; i++)
{
Image img = await LoadPage(l_document, i);
collection.Add(img);
g_rootPage.ListViewControl.ItemsSource = collection;
}
convertPageString - это просто страница, с которой я запускаюсь при открытии программы.
EDIT:
Это моя функция для получения страниц.
public async Task<Image> LoadPage(PdfDocument a_document, uint page)
{
Image l_image;
BitmapImage l_bitmap;
PdfPage pdfPage;
using (IRandomAccessStream Imagestream = new MemoryStream().AsRandomAccessStream())
{
using (pdfPage = a_document.GetPage(page))
{
await pdfPage.RenderToStreamAsync(Imagestream);
l_bitmap = new BitmapImage();
await l_bitmap.SetSourceAsync(Imagestream);
l_image = new Image();
l_bitmap.DecodePixelHeight = 1200;
l_bitmap.DecodePixelWidth = 1000;
l_image.Source = l_bitmap;
l_image.Margin = new Thickness(0, 5, 0, 10);
}
}
return l_image;
}
Я забыл упомянуть, что открываю приложение через commandLine с указанной страницей и путем.