Отображение большого текстового файла в WPF без чтения в память - PullRequest
0 голосов
/ 14 ноября 2018

Я хотел бы иметь возможность отображать большой текстовый файл в WPF - предпочтительно в виде FlowDocument (для стилизации его внешнего вида), но без чтения всего файла в память.

Моя идея состояла бы в том, чтобы реализовать какой-то виртуализированный документ = список строк, который, однако, одновременно содержит ограниченный набор строк в памяти. Например, если файл имеет 1 000 000 строк, коллекция первоначально будет загружать в память только строки 1-1000, а когда будет запрошено количество строк, которые будут загружены еще 100 строк при отбрасывании первых 100 и т. Д. в обоих направлениях, поэтому при переходе назад коллекция должна будет перечитать первые 100 строк, удаляя последние 100 строк из памяти. Кроме того, коллекция должна корректно отражать общее количество строк - в идеале заранее, или, по мере прохождения через файл. (примечание: размер коллекции 1000 и размер страницы 100 являются лишь примерами).

Как это можно отобразить в элементе управления WPF, если сам элемент управления не хранит все строки? Я полагаю, что ItemsControl с виртуализированной StackPanel может каким-то образом это сделать, но он может быть несколько ограничен. Может ли FlowDocumentScrollViewer быть настроен для поддержки этого?

...