简而言之,当加载大量纯数据时,我们无法从任何类型的 WPF 网格/项目控件获得合理的滚动性能。
我们使用 DevExpress WPF 网格创建了一个静态独立原型并将其上传到此处:
http://jump.fm/QOTDL 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));
}
然后绑定到datagrid。非常简单:
gridControl.DataSource = _rowViewModels;
这会导致数据网格显示此信息。我们将字体变小(10px,根据用户的要求),并对列进行自动调整和分组。结果最终看起来与此类似:
http://i54.tinypic.com/21jt11t.png http://i54.tinypic.com/21jt11t.png
而且滚动非常断断续续/缓慢。如果您有任何想法,请告诉我们。