ObservableCollection не виртуализирует данные? - PullRequest
0 голосов
/ 07 августа 2020

Я хочу добавить около 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 с указанной страницей и путем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...