【发布时间】:2014-08-02 23:36:56
【问题描述】:
我刚收到一个关于微软 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 毫秒。
那么微软DataGrid 有什么意义呢?有什么方法可以提高性能吗?我错过了什么吗?
【问题讨论】:
-
您确定 1-3 秒是渲染时间,而不是数据加载时间吗?肯定是很多,你有转换器,calcualtions?
-
是的,我正在测量数据加载时间.. 大约 50 毫秒。我没有任何转换器或计算。那只是随机的 int 值,在文本块列中抛出。
-
DataGrid 很“重”,但 1-3 秒似乎很高。你需要编辑吗? ListView / GridView 更快。
-
好吧,不幸的是我需要分组、排序和编辑。
-
为什么您认为不需要虚拟化?
标签: c# wpf performance mvvm datagrid