加载大量数据(40 列,2000 行)时,WPF 网格滚动缓慢且断断续续

2023-12-31

简而言之,当加载大量纯数据时,我们无法从任何类型的 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

而且滚动非常断断续续/缓慢。如果您有任何想法,请告诉我们。


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

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

加载大量数据(40 列,2000 行)时,WPF 网格滚动缓慢且断断续续 的相关文章

  • 我的 Delphi 11.1 调试器在 x64 项目上突然变得非常缓慢;大约一周前还可以。有什么想法吗?

    更新 拔掉网络 电缆和wifi 会导致 几乎 恢复正常的调试速度 已尝试禁用防火墙没有任何变化 但没有网络恢复正常服务 更新 2 所有 Windows x64 版本都存在缓慢问题 而不仅仅是单个大型项目 如果我构建并调试 32 位 Wind
  • 将 ARGB 拆分为字节值

    我有一个 ARGB 值存储为 int 类型 它是通过调用 ToArgb 来存储的 我现在想要来自 int 值的各个颜色通道的字节值 例如 int mycolor 16744448 byte r g b a GetBytesFromColor
  • 线程独占数据:如何存储和访问?

    NET 中是否有可能将对象实例绑定到线程的当前执行上下文 这样在代码的任何部分我都可以做类似的事情CurrentThread MyObjectData DoOperation 并确保我访问特定于线程的数据 谢谢 你可以看一下线程静态属性 h
  • ASP.NET MVC - 临时要求除一页之外的整个站点授权的简单方法

    我正在建立一个混合了公共页面和会员专用页面的网站 登录系统按原样工作正常 不过 我想启动一个封闭的 仅限邀请的预览 并暂时要求访问者登录才能执行除欢迎页面之外的所有操作 目前我有 Authorize 某些操作方法的属性 我也可以向其他操作方
  • 多选DataGridView没有CTRL键没有闪烁?

    我在表单 Form1 vb 上有一个 DataGridView 控件 需要允许用户在不使用 CTRL 键的情况下多选行 没有可用的键盘 他们使用触摸屏 我已启用 mutliselect 属性 并在 Form 类中包含以下代码 我的 Data
  • 如何调试性能问题/优化您的流星应用程序

    我刚刚将 Meteor 应用程序部署到 Digital Ocean 上的生产服务器上 我注意到 对于大约 7500 个文档 完全获取对象 有选择地仅获取 3 个字段 并填充自动完成数据大约需要 3 5 秒 我相信对于如此数量的数据来说 它应
  • 调用泛型类的方法

    这是上下文 我尝试编写一个映射器来动态地将域模型对象转换为 ViewModel 对象 我遇到的问题是 当我尝试通过反射调用泛型类的方法时 出现此错误 System InvalidOperationException 无法对 Contains
  • 如何使用实体框架设置连接字符串

    我将 EF6 与 MySQL 结合使用 并有一个用于多个数据库的模型 我希望能够在我的表单中设置连接设置 如何以编程方式设置模型的连接字符串 你应该使用EntityConnectionFactory这就是您所需要的 public strin
  • 使用生成的 Golang DLL 返回字符串或 *C.Char

    我一直在努力追随z505 goDLL https github com z505 goDLL回购并遇到了一个大问题 该方法无法返回字符串 我无法读取结果的输出变量 这是我到目前为止使用的代码 Go 完整代码https play golang
  • 使用 TFS API 在单个查询中检索工作项及其链接的工作项

    有谁知道是否可以检索工作项目及其列表链接的工作项使用 TFS API Web 服务从 TFS 进行一趟 目前 我们必须对第一次调用期间进行的每个工作项进行第二次调用 并且引入了性能问题 如果这不可能 是否有办法查看链接工作项的类型而不检索它
  • 为什么对本地列表求和比用“GHC -O2”对教会编码列表求和慢?

    为了测试教会编码的列表如何针对用户定义的列表和本机列表执行 我准备了 3 个基准测试 用户定义的列表 data List a Cons a List a Nil deriving Show lenumTil n go n Nil where
  • 如何让CQRS适应项目? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我发现了一个新术语 名叫CQRS 命令查询职责分离 http martinfowler com bliki CQRS html其中指出 概念模型
  • 在不可变类型的构造函数中生成HashCode

    我对不可变类型的 HashCode 有一些疑问 我可以在构造函数中 预 生成不可变类型的 HashCode 还是有任何理由不这样做 当调用 GetHashCode 方法时 我是否应该再次生成哈希码 这是一个示例类 public class
  • .net 中的计时器合并

    Windows 7 引入了计时器合并 提高了能源效率 哪些托管 API 公开了计时器容差 似乎利用此功能的唯一方法是 p invoke设置等待定时器 http msdn microsoft com en us library windows
  • ROWNUM 的 OracleType 是什么

    我试图参数化所有现有的 sql 但以下代码给了我一个问题 command CommandText String Format SELECT FROM 0 WHERE ROWNUM lt maxRecords command CommandT
  • WPF PRISM 事件订阅不会消亡

    我有一个 PRISM RegionManager 其中有几个区域 顶部的功能区区域和其下方用于我的视图的主要内容区域 相当基本 该应用程序以主要内容区域中的 主页 视图开始 当我单击功能区上的按钮时 我将第二个视图注入内容区域并在区域管理器
  • 如何在我的应用程序中使用 Windows Key

    Like Windows Key E Opens a new Explorer Window And Windows Key R Displays the Run command 如何在应用程序的 KeyDown 事件中使用 Windows
  • 线程、进程和 Application.Exit()

    我的应用程序由主消息循环 GUI 和线程 Task Factory 组成 在线程中我调用一些第三方应用程序var p new Process 但是当我调用Application Exit 在消息循环中 我可以看到在线程中启动的进程仍在内存中
  • *.tlb 文件在运行时使用过吗?

    我正在开发一个通过 COM 互操作公开一些 NET API 的产品 作为构建的一部分 我们为所有此类程序集生成 tlb 文件 并将它们作为单独 SDK 包的一部分提供 我们的客户可以在我们的产品之上安装 SDK 并创建使用我们的 COM A
  • 为什么这个函数在额外读取内存时运行速度如此之快?

    我目前正在尝试了解 x86 64 上某些循环的性能属性 特别是我的 Intel R Core TM i3 8145U CPU 2 10GHz 处理器 具体来说 在循环体内添加一条额外的指令来读取内存几乎可以使性能提高一倍 而细节并不是特别重

随机推荐

  • java图像卷积

    我正在尝试对 image 应用平滑滤波器 但我得到这个错误 java awt image ImagingOpException Unable to convolve src image at java awt image ConvolveO
  • 如何在Xcode中为iOS应用程序添加iPhone 5大屏幕支持? [复制]

    这个问题在这里已经有答案了 可能的重复 iPhone 5屏幕尺寸如何处理 https stackoverflow com questions 12396545 how to deal with iphone 5 screen size 如何
  • 某些网站的响应标头中的“查看源代码”如何丢失

    在 Chrome 的开发人员工具中 有时某些网站的响应标头中缺少 查看源代码 有什么想法吗 以 yahoo com 网站为例 这个网站很好 但雅虎是这样的 这是因为 yahoo com 升级为使用 HTTP 2 HTTP 2 是一个bina
  • Java客户端连接ElasticCache Redis缓存节点

    有没有办法通过提供节点端点来连接到Redis缓存集群节点 我应该为此使用哪个库 另外 我应该使用哪个 API 来存储和检索缓存中的内容 In short 这取决于 解释 您可以连接到 Redis 集群节点 而无需将命令分派到其他节点 您只需
  • Angular 4复选框更改值

    在 Angular 4 中如何实现当您在复选框中注册时保存 A 或 B 值 尽管我尽力了 他只是向我发送了真或假 我希望有人可以帮助我 注册表 组件 ts this userForm new FormGroup state new Form
  • 是否可以在 VSCode 中让一个选项卡具有文件的垂直分割视图,而其他选项卡只有一个文件?

    在 Visual Studio Code 中 我可以拆分视图并并排查看同一文件的两个区域 但从那时起我似乎就有了两种看法 每面都有多个选项卡可供选择 这样我就可以在任意一半的文件之间切换 但我真正想要的是在包含一个文件的两个部分的视图和其他
  • Python Plotly:向具有多个子图的散点图添加水平线

    我有一个在 Plotly dash 上运行的散点图 这是代码 import dash import dash core components as dcc import dash html components as html import
  • Gridview 在 Windows Phone 8.1 中不水平滚动

    Gridview 在 Windows Phone 应用程序中不水平滚动 而是垂直滚动 我只是将 Windows 8 1 应用程序的代码复制粘贴到 Windows Phone 8 1 但它是垂直滚动的 这是xaml代码
  • 如何使用 SQLAlchemy for Scrapy 创建 pg_trgm 索引?

    我正在使用 Scrapy 从网络论坛中抓取数据 我使用 SQLAlchemy 将此数据存储在 PostgreSQL 数据库中 表和列创建得很好 但是 我无法让 SQLAlchemy 在其中一列上创建索引 我正在尝试使用 gin 创建一个三元
  • 负载测试软件[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何将视频数据转换为NSURL

    我有一个从服务器获取并作为数据接收的视频 我试图将原始数据覆盖到 URL 中 以便我可以使用它来实例化 AVPlayerItem 并在手机上播放视频 但是 当我打印 videoDataString 时 此代码返回 nil 如果我打印 vid
  • 如何读取二进制数作为输入?

    有没有办法让用户在C或C 中输入二进制数 如果我们写类似的东西 int a 0b1010 std cout lt lt a lt lt std endl 然后输出结果为 10 当使用适当的编译器扩展时 但是当我们尝试写时 int n std
  • 序列化 swing/awt 组件

    我正在尝试序列化 JPanel 但每次都会收到此错误 java io WriteAbortedException writing aborted java io NotSerializableException javax swing Gr
  • 爬行亚马逊时出现问题,元素无法滚动到视图中

    我在亚马逊上抓取页面时遇到问题 我尝试过使用 执行JS脚本 动作链 显式等待 似乎什么都不起作用 一切都会引发一个异常或错误或另一个 基本脚本 ff create webdriver instance ff get https www am
  • 在网络浏览器中使用 JavaScript 读取文件流

    在网络浏览器中 我想计算本地文件系统中一个大文件的 sha1 校验和 而不将其发送到服务器 File API http www w3 org TR FileAPI支持从本地磁盘读取文件 但我猜它会读取整个文件并将其全部放入内存中 如果文件大
  • 使用已安装的 xCon 进行越狱检测

    我对检测 iOS 越狱有疑问 我使用了一些东西来检测它 它们工作正常 但是当我安装 xCon 时 我的应用程序不再检测越狱 我使用了以下技术 检查cydia是否存在 检查 Cydia 应用方案 检查沙箱外的写入情况 检查符号链接是否存在 检
  • SWIG:未定义类型映射

    我有一个 C 类 我正在尝试使用 SWIG 为 Python 包装该类 我在尝试包装以数组作为输入的函数之一时遇到问题 这是头文件 class dyndiff data t private double H 3 double GAMMA d
  • Hilt 在没有构造函数参数的情况下注入 ViewModel

    使用新的依赖注入库Hilt 如何注入一些类ViewModel没有构造函数参数和ViewModelFactory 是否可以 Like in Fragment 我们只使用 AndroidEntryPoint and Inject 如何在没有构造
  • 如何在 Batik SVG 库中使用自定义字体?

    我正在开发一个为衣服创建模板的 Java 程序 用户输入他们想要在衣服上看到的单词 系统会创建一个 PDF 模板 为了创建模板 我以编程方式创建了一个 SVG 文档 然后使用 Batik 将 SVG 转码为 PDF 格式 我的客户现在希望能
  • 加载大量数据(40 列,2000 行)时,WPF 网格滚动缓慢且断断续续

    简而言之 当加载大量纯数据时 我们无法从任何类型的 WPF 网格 项目控件获得合理的滚动性能 我们使用 DevExpress WPF 网格创建了一个静态独立原型并将其上传到此处 http jump fm QOTDL http jump fm