我做了作为开关工作砖一个可爱的小三项目范围内的清单。 它看起来是这样的:
看起来不错吧? 嗯,我有这些砖约130在垂直滚动列表,它需要年龄的负荷。 根据性能分析工具,每个单元大约需要18ms内渲染 - 这给了我大约2.3第二渲染时间。 在设备上,它往往是两倍的时间。 该不会真的是一个危机,但用户界面完全是黑色的,反应迟钝,直到这些元素已经制定。
一些研究联机后,我意识到这是因为WrapPanel
从工具箱控件不其虚拟化项目-从而使GPU
渲染的所有对象一次(在这个过程中使用了大量的内存)。
现在,有没有办法让这个走得更快?
XAML:
<ListBox x:Name="ChannelsListBox" Grid.Row="2" Margin="0,40,0,0">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<toolkit:WrapPanel />
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.Template>
<ControlTemplate>
<ItemsPresenter />
</ControlTemplate>
</ListBox.Template>
<ListBox.ItemTemplate>
<DataTemplate>
<Grid x:Name="ChannelTile" Margin="6,6,6,6" Tap="ChannelTile_Tap">
<!-- context menu code removed -->
<Rectangle Width="136" Height="136" Fill="{StaticResource LightGrayColor}" />
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
该ListBox
的ItemsSource时被设置在代码隐藏-如果你想知道。