Медленная и беспорядочная прокрутка сетки WPF при загрузке больших объемов данных (40 столбцов, 2000 строк) - PullRequest
5 голосов
/ 11 ноября 2010

Короче говоря, мы не можем получить разумную производительность прокрутки из любого вида элемента управления сетки / элементов WPF при загрузке большого количества чистых данных.

Мы создали статический независимый прототип с использованием DevExpressСетка WPF и загрузила ее здесь:

http://jump.fm/QOTDL

Мы также пробовали использовать сетку Infragistics и Xceed, и проблема та же.

Кажется, чтоWPF просто не может справиться с достаточно большими сетками данных, отображающими большое количество данных, что обеспечивает бесперебойную работу пользователей.Даже без какого-либо связывания данных простое предоставление статических данных (~ 40 столбцов в ширину, 2000 строк) приводит к скроллингу.На самых низких уровнях профилировщик, по-видимому, указывает на чрезмерное количество «измерений», возникающих в дополнение к большому количеству сбора мусора, которое может быть причиной нерегулярного заикания.

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

Дополнительные сведения:

Мы создаем 2000 объектов (по ~ 40 свойств каждый) и присваиваем их свойству источника данных сетки.

Каждый из наших объектов представлен в виде класса, подобного приведенному ниже:

public class RowViewModel
{
    public double AskAsw { get; set; }
    public string AskBmkName { get; set; }
    public double AskBmkPrice { get; set; }
    public double AskBmkSprd { get; set; }
    ... and so on
}

Они созданы и добавлены в коллекцию / список следующим образом:

        for (int i = 1; i < 2000; i++)
        {
            _rowViewModels.Add(new RowViewModel(i));
        }

Изатем привязан к сетке данных.Очень просто:

        gridControl.DataSource = _rowViewModels;

В результате таблица данных отображает эту информацию.Мы уменьшили размер шрифта (10 пикселей по запросу пользователя), а также изменили размер и сгруппировали столбцы.Результат в конечном итоге выглядит примерно так:

http://i54.tinypic.com/21jt11t.png

А прокрутка очень запутанная / медленная.Дайте нам знать, если у вас есть какие-либо мысли.

1 Ответ

4 голосов
/ 08 января 2011

Data Grid, поставляемый с .NET 40, отлично работает. Протестировано с 200 столбцами и 50K строками (сочетание типов int32, double, строк и пользовательских классов.

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

Я могу обойти это, используя свой собственный детальный контроль - две таблицы - пользовательский элемент управления, чтобы получить функциональность группировки. Не отлично, но достаточно для моих нужд.

...