LongListSelector数据虚拟化

时间:2011-07-20 21:21:58

标签: c# windows-phone-7

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

以下是我尝试的内容:我向列表提供了IList实施ItemsSource。问题是列表调用GetEnumerator()而不是this[int index]来获取列表项。

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

2 个答案:

答案 0 :(得分:5)

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

对于数据的加载,可以使用ObservableCollection逐步完成。我得到了一个example project,它显示了如何将ObservableCollection与LongListSelector结合使用。

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

答案 1 :(得分:1)

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