gpt4 book ai didi

WPF DataGrid 渲染速度很慢

转载 作者:行者123 更新时间:2023-12-03 07:53:28 28 4
gpt4 key购买 nike

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

我有一个场景,用户单击一个按钮,然后出现一个带有适当数据的 DataGrid。目前我处于概念验证模式并且仅使用示例数据。我有一个包含 10 行表的数据集。

如果我在单击按钮时没有将任何数据附加到 DataGrid,那么空的 DataGrid 几乎会立即显示,用户不会察觉到延迟。我一添加 10 行数据,6 列,延迟大约 2 秒,对用户来说非常明显。

我什至尝试填充空数据,只是为了显示一个空网格,它同样慢。

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

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

我听说过各种关于在复杂场景中绘制缓慢的 DataGrid 并使用 1000 行的报告,但这很简单,6 列 x 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);

这是我将 DataSet 与其中的 10 行绑定(bind)的方式。
                _dataGrid.ItemsSource = ds.Tables[0].DefaultView;
_dataGrid.DataContext = ds.Tables[0];

不知道我能做些什么不同的事情。

最佳答案

好吧,再加一点(我知道它很老的话题,但它仍然可以帮助某人)......

我试过

EnableColumnVirtualization="True" VirtualizingPanel.VirtualizationMode="Recycling"
EnableRowVirtualization="True"

对于 DataGrid( AutoGenerateColumns="True" ) 绑定(bind)到 DataTable.DefaultView() 并且对速度没有影响,对于速度以及行之间的导航来说仍然很糟糕。然后,我想出了设置 DataGrid 的固定高度和宽度的解决方案。另外我还设置
RowHeight="23" 
ScrollViewer.HorizontalScrollBarVisibility="Visible"
ScrollViewer.VerticalScrollBarVisibility="Visible"

这使我的页面填充得非常快...而不是 2 分钟,现在只需 10-12 秒。

希望它可以帮助某人。

注意:我使用的是 .Net 4.5

关于WPF DataGrid 渲染速度很慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6680879/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com