小编Dav*_*her的帖子

WPF DataGrid渲染速度很慢

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

我有一个场景,用户点击一个按钮,DataGrid会显示适当的数据.目前我在概念模式的证明,只使用样本数据.我有一个DataSet,其中包含10行.

如果我单击按钮时没有将任何数据附加到DataGrid,则空DataGrid会立即显示,用户无法察觉延迟.一旦我添加10行数据,对于6列,延迟大约为2秒,对用户来说非常明显.

我甚至尝试填充空数据,只是为了得到一个空网格,它同样慢.

for (int i = 0; i < 10; i++)
    _dataGrid.Items.Add("");
Run Code Online (Sandbox Code Playgroud)

我设置了一个计时器来计算从单击按钮到执行所有代码以绘制DataGrid时的刻度,它大约是20毫秒,因此代码执行速度非常快,但在屏幕上是大滞后的地方. .我尝试了一个GridView,它在屏幕上渲染得非常快.

我听过各种关于使用复杂场景和使用1000行的DataGrid绘制缓慢的报告,但这很简单,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);
Run Code Online (Sandbox Code Playgroud)

这是我如何将DataSet绑定到其中的10行.

                _dataGrid.ItemsSource = ds.Tables[0].DefaultView;
                _dataGrid.DataContext = ds.Tables[0];
Run Code Online (Sandbox Code Playgroud)

不知道我能做些什么不同.

wpf performance datagrid render

35
推荐指数
7
解决办法
3万
查看次数

标签 统计

datagrid ×1

performance ×1

render ×1

wpf ×1