Silverlight性能与许多加载的控件

前端之家收集整理的这篇文章主要介绍了Silverlight性能与许多加载的控件前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个SL应用程序与许多DataGrids(从Silverlight工具包),每个都在自己的视图.如果打开了几个DataGrids,在视图之间切换(例如TabItems)需要很长时间(几秒钟),并冻结整个应用程序(UI线程).

加载的DataGrids越多,更改所需的时间越长.这些DataGrids可能会拖慢用户界面,这可能在应用程序中的其他位置,甚至在该时刻甚至不可见.但是一旦它们被打开(并加载了数据),它们会缓慢显示其他DataGrids.
请注意,DataGrids未被处理,然后重新创建,它们仍然保留在内存中,只有它们的父控件被隐藏并再次可见.

我已经分析了应用程序.这表明agcore.dll的SetValue功能是瓶颈.不幸的是,调试符号不适用于负责绘图的Silverlight本机库.

问题不在DataGrid控件中 – 我试图用XCeed的网格替换它,而在更改视图时的性能更糟.

你有什么想法如何解决这个问题?
为什么更多的打开的控件减慢其他控件?

我创建了一个示例来显示此问题:VS solution,live demo

更新:
在提供的示例上使用VS11分析器表明,该问题可能在MeasureOverride被多次调用(对于每个DataGridCell,我猜).但是呢,为什么呢更慢呢?有没有办法提高性能

更新2:
我应该提到我不在我的特定应用程序中使用TabControl.我使用Caliburn.Micro和ContentControl来显示当前活动的viewmodel.但是与TabControl相同的问题就是使用它来描述核心问题.

解决方法

所以,我遵循创建自定义控件的想法,结果是: http://www.baud.cz/blog/fast-switching-between-viewmodels-in-caliburn.micro.

快速链接到MVVM演示应用程序:OriginalFixed

猜你在找的Silverlight相关文章