GridView против производительности DataGrid - PullRequest
3 голосов
/ 15 ноября 2011

У меня всегда были серьезные проблемы с производительностью при установке .ItemsSource для Datagrid в коллекцию. Метод возвращается быстро, но есть очень заметная задержка, прежде чем что-либо фактически отображается на экране. Поскольку Datagrid имеет установленные режимы виртуализации, он должен легко обрабатывать очень большие коллекции. Я распечатал некоторую отладочную информацию в связанных свойствах коллекции элементов, чтобы убедиться, что она загружает не всю коллекцию, а только для доступа к первым нескольким элементам, поэтому я уверен, что виртуализация работает. И даже для небольших коллекций задержка примерно одинакова, поэтому она не связана с фактической загрузкой данных.

Так что только рендеринг вызывает замедление. В большинстве случаев это вызвано наличием Datagrid внутри ScrollViewer или автоматической генерацией высоты строки и т. Д. Но я исключил все эти возможные причины, задав все фиксированные ширины, и убедившись, что ничего не установлено в «Бесконечный» или «Авто».

После недолгого выдергивания волос я попробовал что-то простое: я переключил Datagrid для GridView. И, к моему изумлению, он не страдает от большой задержки, он рисует мгновенно. Оба имеют одинаковые свойства и стиль, поэтому я пытаюсь понять, почему Datagrid был намного медленнее.

Есть ли логическая причина, по которой DataGrid может работать медленнее, чем GridView?

Ответы [ 3 ]

0 голосов
/ 03 мая 2012

DataGrid всегда будет довольно медленным, но вы можете получить (довольно) значительное повышение производительности, используя для свойств EnableRow/ColumnVirtualization значение true (не уверен, если вы уже это делаете) и установив фиксированный столбецширина, поскольку это приводит к меньшему количеству повторных вычислений макета.

Предложения взяты из здесь

0 голосов
/ 13 апреля 2018

Спасибо, Йой, Grid View - лучшее, что я ищу. У меня много проблем с сеткой данных. в сетке данных произошла очень большая утечка памяти. когда вы обновляете сетку данных много раз, поток пользовательского интерфейса становится медленнее и медленнее, пока не произойдет сбой программного обеспечения. но gridview очень высокая производительность , Спасибо

0 голосов
/ 09 марта 2012

Сравните количество свойств, событий и методов.DataGrid имеет шаблон редактирования.DataGrid - это гораздо более тяжелый контроль веса, а GridView был создан для скорости.

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