WPF DataGrid渲染速度很慢

我已经尝试使用自定义的DataGrid以及WPF中的库存。我已经尝试手动填充它们以及通过绑定。在这两种情况下,它们都很慢。

我有一个scenerio,用户点击一个按钮,DataGrid出现适当的数据。目前我在概念模式的证明,只是使用样本数据。我有一个DataSet,表中有10行。

如果我单击按钮时没有附加任何数据到DataGrid,空的DataGrid会立即显示,用户不能察觉到延迟。一旦我添加10行数据,6列,延迟约2秒,对用户非常显着。

我甚至尝试填写空的数据,只是为了得到一个空的网格出现,它同样慢。

for (int i = 0; i < 10; i++)
    _dataGrid.Items.Add("");

当把所有的代码执行到绘制DataGrid并且它是大约20毫秒的时候,我把一个计时器从点击按钮开始计数,所以代码执行得非常快,但在屏幕上是大的滞后的地方。我试过一个GridView,它在屏幕上渲染得很快。

我听到过有关复杂场景的缓慢DataGrid绘图和使用1000行的各种报告,但是这样做很简单,就是填写空数据的6列10行。

对于只读显示,GridView对于DataGrid同样可行吗?

更新

这是我的列的创建。

                DataGridTextColumn column = new DataGridTextColumn();
                column.ColumnWidthChanged += new ColumnWidthChangedEventHandler(column_ColumnWidthChanged);

                column.Header = entity.GetPropertyValue("ColumnLabel");
                column.Binding = new Binding(entity.GetPropertyValue("Tag"));
                column.Width = new DataGridLength(entity.GetPropertyDouble("DisplaySize"));
                _dataGrid.Columns.Add(column);

这是我如何绑定10行的DataSet。

                _dataGrid.ItemsSource = ds.Tables[0].DefaultView;
                _dataGrid.DataContext = ds.Tables[0];

不知道我可以做的不同。

你有:

>启用VirtualizingStackPanel.VirtualizationMode为网格?如果没有 – 尝试设置。
>为DataGrid设置VirtualizingStackPanel.IsVirtualizing =“true”
用StackPanel容器包装网格?如果是 – 尝试删除。
通过外部ScrollViewer控件包装网格?如果是 – 尝试删除。

还有一点,
您可以一次绑定整个项目集合,而不是将每个项目添加到grid.Items集合中?

翻译自:https://stackoverflow.com/questions/6680879/wpf-datagrid-is-very-slow-to-render

转载注明原文:WPF DataGrid渲染速度很慢