C# LongListSelector数据虚拟化

C# LongListSelector数据虚拟化,c#,windows-phone-7,C#,Windows Phone 7,LongListSelector是否支持数据虚拟化?我在几篇博客上读到它确实如此,但无法让它发挥作用 以下是我尝试过的:我将IList实现作为ItemsSource提供给列表。问题是列表调用GetEnumerator()而不是this[int index]来获取列表项 所以我的问题是:如何为LongListSelector实现数据虚拟化?正如您所说,LongListSelector仍然基于GetEnumerator,即使在呈现IList类型时也是如此。很可能需要重写控件以支持此目的。虽然博客可能

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

以下是我尝试过的:我将
IList
实现作为
ItemsSource
提供给列表。问题是列表调用
GetEnumerator()
而不是
this[int index]
来获取列表项


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

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

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


基本上,这可以让您逐步添加更多的组和/或更多的数据到组中,UI应该相应地更新

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

您希望对组或所有项目进行数据虚拟化吗。这些组包含项目,因此
LongListSelector
应该根据需要读取尽可能多的组,直到有足够的组和项目为止。是的,但是您应该记住,LongListSelector使用嵌套集合来显示数据。因此,您很可能需要虚拟化内部和外部集合。@claus:谢谢您的快速回答。你能举例说明这是如何工作的吗?在我的程序中,每个组都包含一个项目列表。这是虚拟化的正确数据结构吗?不是。因为正如您所说,即使在呈现IList类型时,LongListSelector仍然基于GetEnumerator。很可能需要重写控件以支持此目的。虽然博客可能会说它支持它,但没有一个说是如何支持的,所以我不愿意相信他们。LongListSelector的默认设置是呈现所有项。例如,100.000个项目会立即呈现,因此我认为首先不需要考虑数据虚拟化。例如project link,access denied。它现在在GitHub上。链接已修复。嗯,现在示例项目已不存在。