WPF 数据网格非常慢

问题描述 投票:0回答:2

我正在使用数据网格来显示包含约 50 行的数据表。由于某种原因,网格的渲染非常慢,我需要大约 2 秒才能显示带有数据的网格。例如,如果我使用 ListBox 或 ListView,渲染速度会更快,这意味着根本没有延迟。 我想要显示的数据表有 20 列,但如果我只想显示一列,它对渲染性能没有影响。

这是我用来显示网格的代码:

    <DataGrid ItemsSource="{Binding Data}" AutoGenerateColumns="True" />

如果我将 autogeneratecolumns 设置为 false(网格渲染行但不渲染列),网格仍然需要 ~2 秒来渲染

   <DataGrid ItemsSource="{Binding Data}" AutoGenerateColumns="False" />

如果我使用列表框,它根本没有延迟(但我需要编写一个通用模板来显示所有列),ListView 也根本没有延迟

    <ListBox ItemsSource="{Binding Data}"/>

我不知道为什么网格那么慢。我也尝试设置 VirtualizingPanel.IsVirtualizing="True" 但它对性能没有影响。

有什么想法吗?

KR曼努埃尔

c# wpf datagrid rendering
2个回答
3
投票

所有 DataGrid 都慢得可怕(即使是你付费的)。您需要开启虚拟化。

VirtualizingStackPanel.IsVirtualizing = true
以及
VirtualizingStackPanel.VirtualizationMode = recycling
。如果你有很多列,或者开始做模板,它会再次变慢。你真的对此无能为力。我已经尝试了所有的 DataGrid(同步融合、基础设施等)。他们都很慢。


0
投票

使用 ObservableCollection 作为数据源

© www.soinside.com 2019 - 2024. All rights reserved.