我们有一个 Silverlight Web 应用程序,它有一个可配置/可定制的视图。
想想 iGoogle。
用户可以添加多个表格面板(实际上是telerik 控件)并将它们配置为在所需的上下文中显示他们想要的信息。
性能不够好。
使用 dotTrace 性能分析,我们有 72 次调用 LoadComponent 方法:
System.Windows.Application.LoadComponent(this, new System.Uri("/Company.Web.Portal.Views;component/Panels/TabularPanelContentView.xaml" +
"", System.UriKind.Relative));
这 72 次调用的总执行时间为 11,465 毫秒,36.85% 的用户在 UI 中体验到的暂停可用。30% 的时间似乎在 LoadComponent 方法调用中,另外 6.64% 在该调用树中的 Telerik 方法中。
因此,加载 Xaml 和从该 xaml 创建对象似乎是成本瓶颈。
有没有办法改善这一点?当然每次都从一个 url 加载到 Xaml,解析 xaml 是昂贵的。没有这个,是否有最佳实践方法可以从同一个 xaml 定义创建多个对象?