gpt4 book ai didi

c# - 没有虚拟化的 WPF DataGrid 性能

转载 作者:太空狗 更新时间:2023-10-29 22:00:56 24 4
gpt4 key购买 nike

我刚收到有关 Microsoft 的 PresentationFramework 的 DataGrid 的问题:

我有一个 ObservableCollection<TestModel> . TestModel是一个具有 20 个 Int 属性的简单类……仅此而已。在我的测试中,我的 ObservableCollection 中有 50 个条目.所以总的来说我得到了 1000 个单元格 (20*50)。所有这些单元格都同时显示,因此实际上不可能进行虚拟化。

这是我的网格:

<DataGrid AutoGenerateColumns="true" RowHeight="20" ItemsSource="{Binding DataGridModelSource}"/>

在我看来,要渲染 1000 个单元格并不算多……尽管渲染这 1000 个单元格需要大约 1 到 3 秒,具体取决于我运行此测试的系统。很多,不是吗?

我用一些自定义的 DataGrids 做了同样的测试就像来自 C1、Infragistics、Mindscape 或 DX 的一样,使用所有这些网格,渲染这 1000 个单元格的时间减少到大约 100 毫秒。

那么 Microsoft DataGrid 有什么意义呢? ?有什么方法可以提高性能吗?我错过了什么吗?

最佳答案

使用 BindingList ( https://msdn.microsoft.com/en-us/library/ms132679%28v=vs.110%29.aspx ) 而不是 ObservableCollection。问题是你必须自己实现分组、排序等,但它应该更快。

您可以做的其他事情是简化当前主题的样式。你可以使用 https://wpfinspector.codeplex.com/可能会找到一些东西(即使它是默认的 Windows 主题)

关于c# - 没有虚拟化的 WPF DataGrid 性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24187884/

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