加载大量数据(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 网格滚动缓慢且断断续续 的相关文章

  • 将 SQL Server 与 Dart 结合使用

    我还没有找到很好的答案 所以我想尝试一下得到答案 将 Microsoft SQL Server 与 Dart 结合使用的最佳方式是什么 我需要它能够从基本上任何操作系统 网络和移动设备上使用它 我觉得最好的方法可能是 GraphQL 但我对
  • 从一张图像复制 ROI 并复制到 wpf 中的另一张图像

    我想开发一个具有以下签名的函数 CopyImage ImageSource inputImage Point inTopLeft Point InBottomRight ImageSource outputImage Point outTo
  • 如何使用c#/VB.NET在word中插入书签

    我正在尝试使用 C 在 Word 文档中添加书签 但它不起作用 而且我在 msdn 文档和互联网上都找不到任何帮助 这就是我正在尝试做的事情 我正在阅读 Word 文档 然后在该文档中搜索关键字 然后将该文本转换为超链接 效果很好 现在 我
  • .NET 是否有相当于 Python 中的 **kwargs 的功能?

    我一直无法通过典型渠道找到这个问题的答案 在Python中我可以有以下函数定义 def do the needful kwargs Kwargs is now a dictionary i e do the needful spam 42
  • BlockingCollection.Dispose 实际上做了什么?

    BlockingCollection Dispose 实际上做了什么 这允许正确处理内部等待句柄 BlockingCollection
  • DI Control-Freak 反模式:难以理解

    我正在阅读 Mark Seemann 写的 NET 中的依赖注入 但我无论如何也无法理解这一点 虽然new当涉及到 VOLATILE 时 关键字是一种代码味道 依赖性 您无需担心将其用于稳定 依赖性 这new一般来说 关键字不会突然变得 非
  • JSON.stringify 对于大型对象来说非常慢

    我在 javascript 中有一个非常大的对象 大约 10MB 当我对其进行字符串化时 需要很长时间 因此我将其发送到后端并将其解析为一个对象 实际上是带有数组的嵌套对象 这也需要很长时间 但这不是我们在这个问题中的问题 问题 我怎样才能
  • Visual Studio 扩展找不到所需的程序集

    我为 Visual Studio 2013 编写了一个扩展 因为该死的组合框错误 https stackoverflow com questions 7800032 cancel combobox selection in wpf with
  • 以线程安全的方式获取随机数

    这是一篇描述随机数线程安全性的好文章 以线程安全的方式获取随机数 http blogs msdn com b pfxteam archive 2009 02 19 9434171 aspx 但我坚持使用 RandomGen2 示例 publ
  • 解释 System.Diagnostics.CodeAnalysis.SuppressMessage

    我在某些应用程序中有这种代码 来自微软 assembly System Diagnostics CodeAnalysis SuppressMessage Microsoft Naming CA1702 CompoundWordsShould
  • 为什么 ᏌᏊ ᎢᏳᎾᎵᏍᏔᏅ ᏍᎦᏚᎩ 是美国的本土名称?

    当我使用这段代码时 var ri new RegionInfo us var nativeName ri NativeName why is nativeName然后是字符串 in Cherokee https en wikipedia o
  • 不将 ViewModel 放置在单独的程序集中有充分的理由吗?

    我正在 WPF 中使用 MVVM 模式开发一个项目 MVVM 的主要优势之一是保持业务逻辑和表示之间的清晰分离 为了测试所有内容实际上的分离程度 周末我将所有 ViewModel 模型和业务逻辑移动到一个单独的 dll 中 exe 被保留为
  • 生成Excel文件错误

    我在经典 ASP 中使用以下代码生成 Excel 文件 代码很简单并且有效 我在 Windows Vista x86 上的 IIS 7 0 下运行代码 两个问题 有一个奇怪的警告框 这是屏幕快照 http i27 tinypic com 2
  • 在我的网站上显示 Google Analytics(分析)仪表板

    我设置了一个 ASP NET 网站 并使用 Google Analytics 进行页面跟踪 我唯一不喜欢的是我必须离开我的网站 到 Google Analytics 网站 才能看到该报告 有什么方法可以使用他们拥有的所有 AJAX 在我自己
  • C# 枚举 - 根据掩码检查标志

    我有以下枚举标志 Flags private enum MemoryProtection uint None 0x000 NoAccess 0x001 ReadOnly 0x002 ReadWrite 0x004 WriteCopy 0x0
  • WebClient读取错误页面的内容

    我有一个加载页面内容的应用程序 我使用 WebClient 类 即使服务器返回 404 500 等错误 我也需要检索内容 我需要这样的东西 WebClient wc new WebClient string pageContent try
  • 如何将pdf页面设置设置为打印属性对话框?

    大家好 我想知道如何设置 pdf 页面设置到打印属性对话框 例如 如果我的 PDF 页面设置为横向 则布局会自动显示横向而不是纵向 如果我的 PDF 页面设置为纵向 则布局会自动显示纵向 我在这个主题上做了很多研发 但没有找到任何满意的链接
  • 如何将字节块读入结构体

    我有一个需要处理的资源文件 它包含一组文件 首先 资源文件列出了其中包含的所有文件 以及一些其他数据 例如在此结构中 struct FileEntry byte Value1 char Filename 12 byte Value2 byt
  • 抽象类或接口。哪种方式是正确的?

    有两种方法可以选择抽象类或接口 微软解决方案和Oracle解决方案 微软 设计指南 请使用抽象 在 Visual Basic 中为 MustInherit 类而不是接口来将协定与实现分离 http msdn microsoft com en
  • 我应该如何在 VB.NET 中进行转换?

    所有这些都相等吗 在什么情况下我应该选择其中一个而不是其他 var ToString CStr 变量 CType 变量 字符串 DirectCast 变量 字符串 编辑 来自的建议不是我自己 https stackoverflow com

随机推荐

  • 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