gpt4 book ai didi

.net - 加载大量用户控件的性能问题

转载 作者:行者123 更新时间:2023-12-05 01:00:14 24 4
gpt4 key购买 nike

我的应用程序正在将一堆相同的用户控件加载到 ScrollPanel 中.问题是,这很慢。

探查器显示该方法 Application.LoadComponent()在我的用户控件的构造函数中的设计器代码中内部调用的 是瓶颈。此方法的文档说,此方法加载 XAML 文件。

问题是,如何使用 BAML 而不是 XAML?如何实现我的用户控件的 XAML 在从中创建新实例时不能一次又一次地解析?还有另一种方法可以更快地加载我的用户控件吗?

最佳答案

LoadComponent()已经加载 .baml ,不要担心这个问题。微软故意这样做,不让开发人员依赖 baml格式。展望 future ,他们可以在不破坏任何现有应用程序的情况下改进格式。

是的,还有其他方法可以让它更快地工作。第一个优化是 UI virtualization . WPF 已经很方便了 VirtualizingStackPanel .它与 ItemsControls 协同工作,并具有某些限制(例如,如果您创建项目容器并自行添加它们,则会失去虚拟化,或者如果您设置 ScrollViewer.CanContentScroll="False" 则会再次失去它)。要使用虚拟化,您可能必须重写您的应用程序才能使用 ItemsControl + DataBinding样式( ListBox 已经启用了虚拟化)

如果您觉得需要更多有关 UI 虚拟化的信息,请参阅 Dan Crevier's blog .

和最后的建议。您可以尝试将用户控件重写为自定义控件。我的简单性能测试显示了以下数字。要使用相同的可视化树创建 10K 控件,需要:

  • 用户控件:4932ms;
  • 自定义控件:86ms; (约快 57 倍)

  • 希望这可以帮助

    关于.net - 加载大量用户控件的性能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4636070/

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