WPF DataGrid性能和选择性渲染

时间:2011-03-25 14:32:01

标签: .net wpf performance datagrid dataset

我将DataGrid绑定到动态DataSet(db表查找数据)

这在大多数情况下都可以正常工作,当列存储大型信息集时接受。一个这样的例子是XML类型列,它存储相当大的XML配置数据片段。

在这种情况下,即使列宽/高度被限制为仅显示该单元格中数据的前300个字符,网格也会减慢为爬行速度。

所以看起来网格渲染单元格中的所有数据而不仅仅是可见部分。

有没有办法将DataGrid配置为只以通用方式呈现此类单元格的子部分(因为我无法预测哪些列需要这个)?

2 个答案:

答案 0 :(得分:1)

它可能是无关的但是我在DataGrid中遇到了各种各样的问题,在窗口调整大小,列排序等之后花了几秒钟来刷新它并在它执行时锁定了窗口UI(1000行, 5列)。

使用WPF大小计算得出问题(bug?)。我在RowDefinition Height =“Auto”的网格中得到它,这导致渲染系统尝试通过测量每个列和行的大小来尝试重新计算DataGrid的大小,可能是通过填充整个网格(据我所知)。它应该以某种方式智能地处理它,但在这种情况下它不是。

快速检查以确定这是否是一个相关问题是在测试期间将DataGrid的高度和宽度属性设置为固定大小,然后再次尝试运行。如果您的性能已恢复,则可以在以下选项中进行永久性修复:

  • 将包含元素的大小更改为相对(*)或 固定值
  • 将DataGrid的MaxHeight和MaxWidth设置为更大的固定值 比在正常使用中可以得到的
  • 尝试另一种具有不同调整大小策略的容器类型(Grid,DockPanel等)

答案 1 :(得分:0)

尝试将您的单元格内容包装在ScrollViewer中或启用虚拟化但已禁用滚动条的内容。

另一种方法是只返回数据源的前300个字符