加载的DataGrIDs越多,更改所需的时间越长.这些DataGrIDs可能会拖慢用户界面,这可能在应用程序中的其他位置,甚至在该时刻甚至不可见.但是一旦它们被打开(并加载了数据),它们会缓慢显示其他DataGrIDs.
请注意,DataGrIDs未被处理,然后重新创建,它们仍然保留在内存中,只有它们的父控件被隐藏并再次可见.
我已经分析了应用程序.这表明agcore.dll的SetValue功能是瓶颈.不幸的是,调试符号不适用于负责绘图的Silverlight本机库.
问题不在DataGrID控件中 – 我试图用XCeed的网格替换它,而在更改视图时的性能更糟.
你有什么想法如何解决这个问题?
为什么更多的打开的控件减慢其他控件?
我创建了一个示例来显示此问题:VS solution,live demo
更新:
在提供的示例上使用VS11分析器表明,该问题可能在MeasureOverrIDe被多次调用(对于每个DataGrIDCell,我猜).但是呢,为什么呢更慢呢?有没有办法提高性能?
更新2:
我应该提到我不在我的特定应用程序中使用TabControl.我使用Caliburn.Micro和ContentControl来显示当前活动的viewmodel.但是与TabControl相同的问题就是使用它来描述核心问题.
快速链接到MVVM演示应用程序:Original和Fixed
总结以上是内存溢出为你收集整理的Silverlight性能与许多加载的控件全部内容,希望文章能够帮你解决Silverlight性能与许多加载的控件所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)