0

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

4

1 回答 1

0

不要绑定到庞大的 2500 个项目集合。将前 50-100 个项目复制到可观察集合并将其绑定到allStations。然后简单地检测用户何时滚动到列表底部并将接下来的 50-100 项复制到可观察集合中。

于 2013-04-08T15:47:05.110 回答