【问题标题】:Datagrid slow when multiple row details have been expanded展开多行详细信息时数据网格变慢
【发布时间】:2014-10-17 12:28:23
【问题描述】:

所以我有一个数据网格,其内容都是从多个 Web 请求中填充的。展开后,rowdetails 还会发送多个 Web 请求以填充更多信息。

在行详细信息中,有一个 Listview、一个列表框、一些布局元素和一些文本块。

添加初始数据后,数据网格快速滚动,但如果您展开 4-5 行详细信息,突然滚动断断续续,几乎不存在。

这是一个已知问题吗?

我可以为每个项目重复使用相同的可视 rowdetails 元素吗?它仅在选中时显示,并且所有检索到的数据都被缓存,因此不需要在已查看的元素上重新加载它

一次不会展开多个行...行详细信息仅在选择项目时显示,并且您一次只能选择一个。问题是在您选择了几个不同的项目并生成了行详细信息视觉对象后,它会变慢。

【问题讨论】:

  • 在您的需求中,是否需要一次展开多于一行,如果没有,那么您可以仅在选择的基础上设置行展开机制。
  • 查看问题的附录
  • 你的性能下降也是因为你使用的动画和你应用到你的内部数据网格的样式。所以你可以尝试的是你可以定义 style={x:null}然后您的子网格可以检查速度和性能。如果它符合您的期望,那么它是样式应用的问题。还有一件事是,您是否曾经在 DataGrid 绑定代码中使用过 UpdateLayout,那么请也将其删除。它也会产生巨大的影响。
  • 这不是问题,看我的回答
  • 也可以使用DeferredScrolling ScrollViewer.IsDeferredScrollingEnabled msdn.microsoft.com/en-us/library/…

标签: c# wpf datagrid rowdetails


【解决方案1】:

我发现了问题。

在行的详细信息中是这个项目:

<Image Source="{Binding Path=PreviewImageUrl, TargetNullValue=Collapsed}" />

PreviewImageUrl 为 null,对于创建/扩展的每个行详细信息项,它会在滚动时引发(并抑制)图像转换器异常。这种异常抑制是减慢滚动的原因(在扩展 10 行详细信息后,它会在每个滚动事件上引发 10 个异常)。至于为什么会发生这种情况,我仍然感到困惑,但至少我现在知道要注意什么了!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-06
    • 2019-06-06
    • 2016-11-24
    • 2012-03-29
    • 1970-01-01
    • 2012-01-06
    • 2017-04-27
    • 1970-01-01
    相关资源
    最近更新 更多