我有一个从互联网上获取内容的应用。那些信息是如此之大,无法适应记忆。
LongListSelector
确实UI Virtualization
。仍然是Data Virtualization
。我认为解决方案是首先将数据保存在数据库中然后显示它。
我不知道该怎么做,这些都是我头脑中的问题:
Data Virtualization
? 感谢。
答案 0 :(得分:1)
数据虚拟化的基本思想是创建可以加载和自定义的自定义集合。按需返回项目(没有先前加载完成设置在内存中)。以下是从根本上简化的实现(改编自this blog post):
namespace VirtualizingDataTest
{
public class VirtualizedDataSource : IList
{
public object this[int index]
{
get
{
string text = "Requesting\t" + index;
Debug.WriteLine(text);
return "Item " + index;
}
set
{
throw new NotImplementedException();
}
}
}
在上面的示例中,根据请求创建了新项目。在您的情况下,如果在线源提供了一种在特定索引中请求项目的方法,则您不需要数据库。您可以使用逻辑来下载this[]
getter中的特定项目。可在此处找到更多参考资料(各种更好/更完整的实施):https://stackoverflow.com/a/6712373/2998271
鉴于UI虚拟化工作,LLS将仅请求显示的子项集(换句话说,this[]
getter不会被调用所有可用的索引,只有那些要显示的项目。< / p>