LongListSelector数据虚拟化

LongListSelector是否支持数据虚拟化? 我在几个博客上看到它确实如此,但无法让它发挥作用。

这是我尝试过的:我提供了一个IList实现作为ItemsSource到List。 问题是List调用GetEnumerator()而不是this[int index]来获取列表项。

所以我的问题是:如何为LongListSelector实现数据虚拟化?

正如您所说,即使在呈现IList类型时,LongListSelector仍然基于GetEnumerator。 很可能需要重写控件以支持目的。 虽然博客可能会说它支持它,但没有人说它是如何,所以我不倾向于相信它们。 LongListSelector的默认设置是渲染所有项目。

至于数据的加载,可以使用ObservableCollection逐步完成。 我有一个示例项目 ,展示了如何将ObservableCollection与LongListSelector结合使用。

基本上,这可以允许您逐步向组中添加更多组和/或更多数据,并且UI应相应地更新。

我查看了LongListSelector源代码,无法虚拟化后备存储。 LongListSelector通过foreach循环从组列表中加载每个项目。