我正在使用datagrid来显示包含~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 Manuel
答案 0 :(得分:0)
所有DataGrid都非常慢(甚至是你支付的那些)。您需要打开虚拟化。 VirtualizingStackPanel.IsVirtualizing = true
以及VirtualizingStackPanel.VirtualizationMode = recycling
。如果你有很多专栏,或者开始做模板,它会再次慢慢爬行。你真的无能为力。我已经尝试过每一个DataGrid(syncfusion,infragistics等)。它们都很慢。