Короче говоря, мы не можем добиться приемлемой производительности прокрутки от любого типа элемента управления сеткой / элементами WPF при загрузке большого количества чистых данных.
У нас есть создал статический независимый прототип с использованием сетки DevExpress WPF и загрузил его здесь:
Мы также пробовали использовать сетку 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
И прокрутка очень медленная / медленная. Сообщите нам, если у вас возникнут какие-либо мысли.