gpt4 book ai didi

.net - 加载大量数据(40 列,2000 行)时,WPF 网格滚动缓慢且卡顿

转载 作者:行者123 更新时间:2023-12-04 20:23:03 25 4
gpt4 key购买 nike

简而言之,当加载大量纯数据时,我们无法从任何类型的 WPF 网格/项目控件中获得合理的滚动性能。

我们使用 DevExpress WPF 网格创建了一个静态独立原型(prototype)并将其上传到此处:

http://jump.fm/QOTDL

我们也尝试过 Infragistics 和 Xceed 网格,问题是一样的。

就提供流畅的用户体验而言,WPF 似乎根本无法处理显示大量数据的相当大的数据网格。即使没有任何类型的数据绑定(bind),只要提供静态数据(约 40 列宽,2000 行),滚动就会变得非常困难。在最低级别,分析器似乎表明除了大量垃圾收集之外还发生了过多的“测量”,这可能是不规则口吃的原因。

原型(prototype)中的代码可以很容易地替换为与其他网格一起使用。如果有任何人能够在给定的场景中产生流畅的滚动体验,尤其是在数据被分组在多个级别并且密集打包的情况下,请告诉我们,我们非常有兴趣收到您的来信。

其他详细信息:

我们正在创建 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));
}

然后绑定(bind)到数据网格。非常简单:
        gridControl.DataSource = _rowViewModels;

这将导致显示此信息的数据网格。我们使字体更小(10px,根据用户的要求),并自动调整列大小和分组。结果最终看起来类似于:

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

滚动非常卡顿/缓慢。如果您有任何想法,请告诉我们。

最佳答案

.NET 40 附带的数据网格可以很好地解决这个问题。测试了 200 列和 50K 行(int32、double、字符串和自定义类显示的混合。

有一些标志可以打开行和列虚拟化。但请记住,如果您正在进行分组,那会扼杀行虚拟化。

我通过使用我自己的向下钻取 - 两个表 - 用户控件来获得分组功能来解决这个问题。不是很好,但足以满足我的需求。

关于.net - 加载大量数据(40 列,2000 行)时,WPF 网格滚动缓慢且卡顿,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4150356/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com