Prism的RegionManager视图切换性能

时间:2017-01-30 14:10:59

标签: wpf performance prism

我使用PRISM库编写的WPF应用程序性能分析。 在这个应用程序中,从一个视图导航到另一个视图特别慢,特别是当导航远离一个重的"视图。 请注意:

  • 视图被缓存,而不是在导航时重新构建。第四个(PRISM保留SingleActiveRegion中所有观点的结果)
  • 据我所知,由于xaml解析,JIT'第一次构建视图可能会很慢。但是这个问题是关于导航保持缓慢,甚至是第一次打开视图后

使用PRISM库,区域通常在ContentControl上实现,例如:

<ContentControl regions:RegionManager.RegionName="MAIN" />

因此,在MAIN区域中切换视图将更新&#34;内容&#34;这个ContentControl(从the source code可以看出)。 设置&amp;将UI元素切换为&#34;内容&#34; ContentControl的性能副作用(请参阅this blogpost)。

为了克服这种情况,我为网格实现了一个自定义RegionAdapterBaseCachingGridRegionAdapter.cs),它基本上添加了导航为子视图的所有视图,并隐藏了所有非活动视图。

性能提升是巨大的;现在可以立即从一个视图导航到另一个视图。 问题:这种方法有什么缺点吗?

  • 在记忆方面,我没有看到任何问题,因为所有观点都被PRISM记录在内存中
  • 有一个很大的视觉树有一个缺点,许多部分有Visibility = Collapsed?


如果还有其他方法可以解决这个问题,请告诉我。


谢谢你的时间,
柯恩

0 个答案:

没有答案