WPF listview / gridview производительность ужасна, предложения - PullRequest
6 голосов
/ 20 февраля 2009

У меня есть окно, использующее WPF ListView / GridView, привязанное к ObservableCollection. Спектакль совершенно ужасен. Приложение задыхается, пытаясь загрузить 300-400 элементов и пики загрузки ЦП при каждом добавлении / удалении / изменении элемента. Профилирование не показывает ничего очевидного.

У кого-нибудь есть предложения?

Ответы [ 6 ]

8 голосов
/ 23 февраля 2009

Проверьте эти свойства:

VirtualizingStackPanel.IsVirtualizing="True"
VirtualizingStackPanel.VirtualizationMode="Recycling"
ScrollViewer.IsDeferredScrollingEnabled="True"
5 голосов
/ 13 мая 2009

Вам необходимо виртуализировать ItemSource вашего ListView, как описано в этой статье: WPF: виртуализация данных на CodeProject на Пол МакКлин

2 голосов
/ 20 февраля 2009

Первое предположение, вы используете сложные шаблоны данных для каждого ListViewItem? Это может быть что угодно, от множества изображений до (старых) BitmapEffects, до даже лениво загруженных свойств, которые извлекают данные из базы данных по запросу (что может привести к тому, что вы будете выполнять много вызовов БД для визуализации каждого визуала в зависимости от того, как ваша модель данных работы).

Второе предположение, может ли сам список быстро выполнять свои процедуры загрузки / добавления / изменения / удаления (что означает, что проблема возникает при рендеринге данных), или сам список выполняет эти задания медленно (указывая, что в списке есть некоторые вид вопроса).

1 голос
/ 27 марта 2009

И самое очевидное: убедитесь, что вы обновились до .net 3.5 SP1, там было много прироста производительности.

Также, возможно, стоит взглянуть на элемент управления сетки данных WPF, так как большая часть работы по производительности в .net 3.5 с пакетом обновления 1 (SP1) была такой, чтобы сетка обзора имела хорошую производительность для больших наборов данных.

http://wpf.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=25047

1 голос
/ 21 февраля 2009

вы пробовали виртуализацию, как рекомендовано в этом вопросе ??

WPF ListView Очень низкая производительность - почему? (ElementHost или другая причина?)

0 голосов
/ 16 января 2019

У меня были похожие проблемы. Установка значения MaxHeight, превышающего фактическую высоту ListView, решила его для меня мгновенно, благодаря этому ответу здесь , но я все еще не понимаю, как это работает.

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