我有这个xaml:
<controls:Pivot>
<controls:PivotItem Header="All Stations">
<ScrollViewer>
<ItemsControl x:Name="allStations">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<VirtualizingStackPanel />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Button Content="{Binding Name}"
Click="OnStationClick" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</ScrollViewer>
</controls:PivotItem>
</controls:Pivot>
在后面的代码中,我将allStations.ItemsSource
设置为一个包含大约2500个项目的集合,这会使UI冻结几秒钟。我能做些什么来加快这个负荷?虚拟化应该确保它只需要为10个左右的项创建控件,但它似乎正在为所有项创建控件。
答案 0 :(得分:0)
不要绑定到巨大的2500项集合。将前50-100个项目复制到可观察集合并将其绑定到 allStations 。然后只需detect when the user scrolled to the bottom of the list并将接下来的50-100个项目复制到可观察集合中。