gpt4 book ai didi

c# - 防止在测量阶段调用 ApplyTemplate()

转载 作者:可可西里 更新时间:2023-11-01 14:37:29 27 4
gpt4 key购买 nike

我目前正在为我正在处理的应用程序创建一个虚拟化的 TreeView 控件。我当前的实现依赖于优化的测量算法,这给我带来了一些问题。在进入细节之前,请注意我使用的是 .NET 4.0 版。

我为优化内部 TreeView 控件的测量所做的工作是最大限度地减少 MeasureOverride() 函数中所做的工作。我已经了解了最基本的内容,现在剩下的是深入 WPF 内部的昂贵调用。基本上,在控件上调用 Measure() 会在子控件上应用所有模板,这非常昂贵。由于我的 TreeViewItems 都具有定义的高度,因此在测量阶段我并不真正需要模板。有谁知道绕过 ApplyTemplates() 调用的方法吗?

这是一个示例调用栈

  • MyCustomControl.MeasureOverride(...)
    • ...
      • UIElement.Measure(...)
        • FrameworkElement.MeasureCore(...)
          • FrameworkElement.ApplyTemplate(...) <-- 太贵了!

最佳答案

我不确定您能否避免 ApplyTemplate()调用您的具体情况,但您不需要这样做。 WPF TreeView内置了对 UI 虚拟化的支持:

<TreeView VirtualizingStackPanel.IsVirtualizing="True" />

查看 this page了解更多信息。

关于c# - 防止在测量阶段调用 ApplyTemplate(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18882120/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com