Фильтрация большого количества текстовых строк в сетке данных WPF влияет на производительность - PullRequest
0 голосов
/ 27 мая 2018

Я использую сетку данных WPF, которую я связал с объектом OberservableCollection для обработки и отображения моего текста.Я работаю с очень большими текстовыми файлами (100 000 строк и даже больше).Несмотря на то, что я могу загружать и отображать текст в сетке данных за разумное время, у меня возникают проблемы с фильтрацией текста.

Я создал функцию фильтрации и, используя объект ICollectionView, назначил еечтобы отфильтровать текст следующим образом:

_TextLineListView = CollectionViewSource.GetDefaultView(TextLineList);
_TextLineListView.Filter = _textLineFilter;
DgText.ItemsSource = _TextLineListView;

TextLineList - мой объект ObservableCollection._textLineFilter - это моя функция фильтрации.

Даже если моя функция фильтрации просто возвращает «true» без каких-либо дополнительных функций, скорость загрузки текста существенно снижается и намного медленнее.

Какие другиеметоды фильтрации я могу использовать, чтобы ускорить процесс?

Ответы [ 2 ]

0 голосов
/ 29 мая 2018

Вам необходимо использовать DeferRefresh метод.

using (_TextLineListView.DeferRefresh())
{
    for (int i = 0; i < lines.Length; i++)
        TextLineList.Add(lines[i]);
}
0 голосов
/ 28 мая 2018

Проблема решена.Если я устанавливаю фильтр после загрузки файла, загрузка, отображение и фильтрация текста происходит намного быстрее

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