【问题标题】:WPF Speed Load Time of Expanding a Specific TreeView Element扩展特定 TreeView 元素的 WPF 速度加载时间
【发布时间】:2015-03-10 15:56:21
【问题描述】:

我一直在尝试找出改善包含 1500 个平面节点的树视图元素的加载时间的具体方法。目前展开单个节点需要15秒以上。

我已经尝试过有关虚拟化的建议,但我的理解是,虚拟化基本上可以避免加载和渲染看不见的元素。对吗?

如果是这样,当您展开一个元素时会发生什么情况,该元素在该单个展开中有 1500 个项目,那么它不需要加载这 1500 个项目吗?

很明显,如果我拆分 TreeView 以便每次添加 10 个元素时,它就会添加另一个文件夹。所以你不能一次查看整个树视图。这对我来说不是一个真正的选择。

那么有没有办法在后台加载树元素添加,这样即使在加载项目时我也可以显示树视图?

这是我能想到的唯一解决方案,但我还没有遇到一种能够更新 UI 并且不会同时被阻塞的方法。

谢谢

【问题讨论】:

    标签: wpf optimization treeview


    【解决方案1】:

    虚拟化是合乎逻辑的方式。

    数学是你的朋友: 让我们为了争论,假设 1 个节点占据了一个非常小的 5 个垂直像素。一个高度为 7500 像素的屏幕将能够显示所有 1500 个节点。

    将数量减半至 750 个节点仍需要 3750 像素的高度。

    如果我们为一个节点取一个更合理的高度,我认为默认值是 19,一个像样的 4K 显示器可以显示大约 200 个。

    我目前在 1920x1200 显示器上运行,缩放比例为 100%(奇怪地称为“更小”)。 Explorer 折叠了功能区,显示了 43 个项目。 2000 像素可以让我看到大约 73 个项目。 Explorer 中的项目非常小,我希望它们不会失明。

    底线:您不太可能遇到虚拟化问题。

    【讨论】:

    • 我现在同意 - 我组装了一个测试应用程序,虚拟化工作,所以我提取了我较大的应用程序的一些部分,直到虚拟化实际上按我预期的那样运行,并发现它是一个胭脂滚动查看器。感谢您的回复。
    【解决方案2】:

    对于遇到这个问题的任何人。确保您没有在与树视图相同的网格中包装(甚至没有滚动查看器)。

    它会在没有警告的情况下完全禁用虚拟化。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-20
      • 2020-07-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多