我在枢轴控件中有三个longlistselector。 每个longlistselector有10-20个项目。 当我导航回显示pivot + longlistselector的页面时,该页面需要大约3秒钟才能在512 MB的诺基亚Lumia上呈现。
我在Visual Studio 2013中进行了性能分析,发现框架的CPU利用率约为85%。挖掘视觉树显示了枢轴的项目演示者约70%的渲染时间。然后,对于枢轴控件中的每个LongListSelectors,将其拆分为35%,16%,20%。
当我展开ItemPresenter时,我可以看到LongListSelector大部分时间都在消耗。下面,我可以看到“ContentPresenter”和Canvas也花时间。
我对内存进行了分析,但该工具在那里找不到任何可疑的东西。
如何检查重新渲染之前显示的页面究竟花了多长时间?
答案 0 :(得分:2)
我遇到了同样的问题,看起来只是LongListSelector在返回时必须重新呈现视图模型的内容。我能找到改善这种情况的唯一方法是在页面“OnNavigatedTo”方法中取消挂钩LLS的ItemSource属性,然后在页面“OnLoaded”事件中以编程方式重新挂起它(参见下面的例如)
脱开:
MyLongListSelectorControl.ItemsSource = null;
重新创建:
Binding ItemSourceBinding = new Binding("MyDataProperty");
MyLongListSelectorControl.SetBinding(LongListSelector.ItemsSourceProperty, ItemSourceBinding);
请注意,“MyDataProperty”可以是您在XAML中绑定的文本。
通过这种方式,页面至少可以通过某种“加载”指示器直观地呈现,然后将填充长列表选择器,从而给出应用程序完美响应的错觉。