如何在Windows Phone中为在线内容进行数据虚拟化?

时间:2014-03-05 00:26:12

标签: c# xaml windows-phone-8 windows-phone

我有一个从互联网上获取内容的应用。那些信息是如此之大,无法适应记忆。

LongListSelector确实UI Virtualization。仍然是Data Virtualization。我认为解决方案是首先将数据保存在数据库中然后显示它。

我不知道该怎么做,这些都是我头脑中的问题:

  • 我应该怎样做Data Virtualization
  • 如果没有足够的空间会发生什么。
  • 赞赏任何来源或提示。

感谢。

1 个答案:

答案 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>