【问题标题】:ItemsSource rendering delayItemsSource 渲染延迟
【发布时间】:2024-01-23 15:18:01
【问题描述】:

当我在 Datagrid 上设置 .ItemSource() 时,调用几乎立即返回,但在呈现实际行之前存在很大延迟。这是非常明显的,我想知道为什么会发生这种情况,因为所有其他渲染操作都会立即发生。例如,滚动速度非常快,删除/重新排序列会立即呈现。所以这种延迟只会在设置新的 .ItemsSource 时发生。数据网格没有自定义样式/触发器/模板,所以我不明白为什么渲染需要这么长时间。如果我将窗口调整为非常小的尺寸,延迟就消失了,所以不是绑定本身很慢。

【问题讨论】:

  • 你解决了这个问题吗?
  • @RobotMess 是的,在某种程度上,但我不记得如何了。我相信这与使用 .DataSource() 而不是 .ItemSource() 有关,但我不确定。

标签: wpf performance binding datagrid rendering


【解决方案1】:

这取决于几个原因:您的 DataSource 有多快,其中有多少行以及最重要的一个:您是否在 DataGrid 中使用分组?如果是这样,则 DataGrid 控件中存在一个已知错误,导致它在处理大数据和分组时显着变慢。

【讨论】:

  • 我不使用分组,我将调试语句放在我绑定到的对象的属性中,并在设置 ItemsSource 后立即打印,直到很久以后渲染才完成,所以看起来确认它不是慢的绑定。
  • 是否渲染复杂(大数据模板、长动画、大图、颜色渐变、a.s.o.)
  • 不,它只是普通的标准数据网格,没有任何自定义。
  • 最好的方式是提供一些示例代码。