如何处理Windows Phone上的大列表

时间:2013-04-08 12:54:36

标签: windows-phone-7

我有这个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个左右的项创建控件,但它似乎正在为所有项创建控件。

1 个答案:

答案 0 :(得分:0)

不要绑定到巨大的2500项集合。将前50-100个项目复制到可观察集合并将其绑定到 allStations 。然后只需detect when the user scrolled to the bottom of the list并将接下来的50-100个项目复制到可观察集合中。