我有2級的深度集合,我把它渲染成像Header,Child Item一樣的東西。如何進一步優化Windows Store應用程序?
粗略地說,我的代碼看起來是這樣的:
<ScrollViewer>
<ItemsControl IsEnabled="{Binding Path=IsEnabled}"
ItemsSource="{Binding Path=HeaderViewModels, Mode=OneTime}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemsTemplate>
<DataTemplate>
<StackPanel Visibility="{Binding Path=ShouldShow, Converter={StaticResource SomeConverter}}">
<TextBlock Text="{Binding Path=Description, Mode=OneTime}" />
<ItemsControl ItemsPanel="{StaticResource WinRTXAMLWrapPanel}"
ItemsSource="{Binding Path=ChildViewModels, Mode=OneTime}">
<i:Interaction.Behaviors>
<SomeClass:AdjustSizeBehavior SizeFromParentMode="Height" />
</i:Interaction.Behaviors>
<ItemsControl.ItemsTemplate>
<DataTemplate>
<ContentControl>
<i:Interaction.Behaviors>
<SomeClass:IsEnabledBehavior />
<SomeClass:PointerPressBehavior />
<SomeClass:PointerLeaveBehavior />
</i:Interaction.Behaviors>
<StackPanel>
<TextBlock Text="X">
<i:Interaction.Behaviors>
<SomeClass:SetXMarkColor />
</i:Interaction.Behaviors>
</TextBlock>
<TextBlock Text="{Binding Path=Description, Mode=OneTime}" />
</StackPanel>
</ContentControl>
</DataTemplate>
</ItemsControl.ItemsTemplate>
</ItemsControl>
</StackPanel>
</DataTemplate>
</ItemsControl.ItemsTemplate>
</ItemsControl>
</ScrollViewer>
冷落的造型,但其相當多的背景下,利潤,字體大小等。此外,你可以看到我使用大量的綁定和行爲。
我已經做了大部分我能想到的優化。刪除了不必要的UI元素(例如用於「背景」的矩形),使用StackPanel而不是Grid,將列/高度設置爲靜態而不是自動。基本上做什麼,我可以在此鏈接:Twelve ways to improve wpf performance和Best practices for Windows Store Apps
隨着我也做了優化,其實我已經減少了10頭+ 8的孩子每個(共80個)的加載時間,從1.8秒到大約0.5毫秒 - 0.6毫秒。
但是,我希望它達到小於0.5毫秒,所以它就像'即時'。
有什麼我可以做的,以提高性能?
謝謝!
使用一個分析器,看看哪些東西仍然需要花費時間並將精力集中在那裏。 –
謝謝,是的,爲了優化它,我使用了VS 2013 profiler和Windows Performance Recorder。注意到大部分處理都是關於UI元素的,所以在那裏努力減少它,但現在我正在尋找其他可能性。 – Water