C# 具有大量行的Datagrid

C# 具有大量行的Datagrid,c#,wpf,datagrid,large-data-volumes,C#,Wpf,Datagrid,Large Data Volumes,在我的WPF应用程序中,我有一个带有选项卡控件的屏幕。其中五个选项卡包含需要显示大量行(至少5000行)的数据网格。这些表绑定到零件对象的可观察集合。每行显示大约20个零件数据点。我的问题是,在用户输入他们需要的信息并生成数据后,单击选项卡会导致应用程序挂起30-60秒。在此之后,datagrid最终加载,并且使用正确的虚拟化设置,它们以可接受的速率执行(不太快,但也不太慢)。如果禁用虚拟化,程序会占用太多内存,加载时间也不会受到影响 最具攻击性的表由大约六个模板列组成。每个模板包含stackp

在我的WPF应用程序中,我有一个带有选项卡控件的屏幕。其中五个选项卡包含需要显示大量行(至少5000行)的数据网格。这些表绑定到零件对象的可观察集合。每行显示大约20个零件数据点。我的问题是,在用户输入他们需要的信息并生成数据后,单击选项卡会导致应用程序挂起30-60秒。在此之后,datagrid最终加载,并且使用正确的虚拟化设置,它们以可接受的速率执行(不太快,但也不太慢)。如果禁用虚拟化,程序会占用太多内存,加载时间也不会受到影响

最具攻击性的表由大约六个模板列组成。每个模板包含stackpanel或网格内的控件;基本上每一行被分成两行,就像一个双行。这种布局是必需的,而且分页可能不是客户愿意接受的


这是我的应用程序中最重要的一个屏幕,我对如何让它工作感到非常困惑。我能做些什么来加快这个过程吗?也许ObservableCollection是一个错误的选择?

请您提供更多的见解

  • 您可以检查“生成”5个集合(每个集合包含5000行)所花费的时间吗?(我想你是这么说的)

  • 在“我们将集合分配给项目源”之后的“UI加载时间”上的“虚拟化”

  • 如果仅当tabItem实际可见\选中时才将“ItemsSource”绑定到相应的数据网格,会发生什么情况

  • 数据网格是否有默认的排序成员路径?分组?过滤路径


  • 以下是我希望从这个问题开始的几件事情。

    也许这会有所帮助?正如我所说的,客户端不会进行分页。关于这个链接,我已经尝试了回复中列出的所有代码修改建议,但是我没有查看性能工具包。我将试一试,看看是否有什么结果。最耗时的任务是将数据渲染到网格中,所以“分页”是正确的方法。请记住,“分页”只是呈现用户可以看到的一小块数据,而不是一次呈现所有数据。一般来说,“分页”和“显示”之间的GUI行为都是一样的。只是出于好奇,为什么客户端不进行分页?我必须同意Austin和@ajax81。分页可能是最好的解决方案。您说过,“分页可能不是客户愿意接受的东西”。“可能”?你问过了吗?如果你向客户解释问题,他们就会理解。您的问题是您的数据太多,无法一次显示。1。单击选项卡时已生成集合。这种情况发生得很快。2.30-60秒。3.我不知道,我现在就试试。4.它们没有排序,没有分组,也没有筛选。并且更新到#3。。。我更改了选项卡上的itemssource,数据开始显示前仍需要大约30秒,UI完全解冻前还需要20或30秒