【问题标题】:Virtualized TreeView - Unstable behaviour while scrolling虚拟化 TreeView - 滚动时行为不稳定
【发布时间】:2018-05-07 02:08:23
【问题描述】:

按照this questionthis question,现在我有一个带有分层数据的TreeView,如下图所示:

由于数据量大,我开启了TreeViewVirtualization属性(VirtualizingPanel.IsVirtualizing="True")。

现在问题是:滚动树非常不稳定。我试图解释无法解释的行为:

  • 滚动时,项目刚刚消失/卸载。使用WPF Inspector,我实际上看到,它们会不断卸载并再次加载。
  • 在滚动第 3 级项目时,树不会加载仍未加载的项目(如预期的那样),但下一个第 2 级项目会跳到可见的第 3 级项目之上。

注意事项:

  • 当所有 Level2 项目都折叠时,滚动工作正常。
  • 关闭虚拟化可以解决滚动问题(当然在这种情况下我遇到了加载问题)
  • 我已阅读 here,该错误已在 .Net 4.5.2 中修复。我什至尝试过.Net 4.7.1。行为保持不变。

有什么办法可以避免这种行为?

【问题讨论】:

  • 我不确定我是否理解症状。您是说 2 级项目叠加在 3 级项目之上 - 绘制在同一个地方?
  • 听起来您发现了一个与您引用的 4.5.2 错误具有相似症状但根本原因不同的错误。请在connect.microsoft.com 打开一个错误并附上一个复制品(或与我分享一个复制品)。该行为可能取决于您的 TreeView 及其项目的模板和样式,您没有在此处显示。我们最近修复了(针对 4.7.2)当您为 TreeViewItem 的展开/折叠设置动画时出现的一组问题,但症状有所不同 - 没有叠加渲染。

标签: .net wpf treeview virtualization smooth-scrolling


【解决方案1】:

您是否尝试将 VirtualizingPanel 上的 ScrollUnit 设置为 Pixel-Scrolling?当 IsVirtualizing 和 IsVirtualizingWhenGrouping 设置为 true 时,这有助于我在 ListViews 上出现奇怪的 scolling 行为:

VirtualizingPanel.IsVirtualizing='True'
VirtualizingPanel.IsVirtualizingWhenGrouping='True'
VirtualizingPanel.ScrollUnit='Pixel'

【讨论】:

  • 是的,我试过了,但对问题没有帮助。它实际上已经设置为Pixel。问题在于虚拟化本身。
猜你喜欢
  • 2017-06-27
  • 2012-12-15
  • 1970-01-01
  • 1970-01-01
  • 2017-08-12
  • 2023-03-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多