我有一个从互联网获取内容的应用程序。这些信息太大了,无法容纳在内存中。
LongListSelector
does UI Virtualization
出色地。遗迹Data Virtualization
。我认为解决方案是先将数据保存在数据库中然后显示它。
我不知道该怎么做,这些是我脑海中的问题:
- 我应该这样做吗
Data Virtualization
?
- 如果没有足够的空间会发生什么。
- 任何来源或提示表示赞赏。
thanks.
数据虚拟化的基本思想是创建自定义集合,可以按需加载和返回项目(无需事先在内存中加载完整的集合)。以下是彻底简化的实现(改编自这篇博文) :
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[]
吸气剂。更多参考资料(各种更好/更完整的实现)可以在这里找到:https://stackoverflow.com/a/6712373/2998271
鉴于 UI 虚拟化工作,LLS 将仅请求显示项目的子集(换句话说,this[]
getter 不会为所有可用索引调用,只有那些要显示的索引)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)