【问题标题】:Virtualizing Data in Windows Phone 7: An example在 Windows Phone 7 中虚拟化数据:一个示例
【发布时间】:2010-10-22 15:55:14
【问题描述】:

在 Windows Phone 中,ListBox 支持数据的虚拟化,这意味着它只能加载所需的数据,而不是所有内容。 Peter Torr explains 你需要实现的接口。

简短的版本是您必须创建一个返回元素位置的方法和另一个返回特定位置的元素的方法。问题是 Peter Torr 的例子相当愚蠢,他只是返回一个以索引为名称的对象。

我的问题是:您实际上是如何实现的?

我的想法是创建一个文件,其中包含一个(整数)索引和一个(整数)id 的列表,以及一个包含实际数据的每个对象的文件。这似乎不是一个真正优雅的想法,但我想不出更好的办法,你能吗?

更新

看来我的问题不准确。当我说彼得托尔的例子“相当愚蠢”时,我并不是说他做错了什么。他的目的只是解释你需要实现什么接口。实际实施将取决于具体数据。

我要问的是我有什么选择来实现这个?我是否应该简单地将数据放在 Web 服务上并每次都查询它(当然,使用本地缓存)、构建数据库、创建一个文件来存储索引和一个用于数据的文件?在每种情况下都有足够好的解决方案吗?每个选择的优缺点是什么?

【问题讨论】:

  • 仅供参考,您的问题似乎不是关于虚拟化,而是关于如何在设备上存储数据。如果是这样,你可以改写它。

标签: windows-phone-7 data-virtualization


【解决方案1】:

您链接到的文章包括一个link to a downloadable project,它演示了如何实现这一点。

【讨论】:

  • 其实不是,它展示了如何实现所需的接口,而不是如何检索实际数据。在他的示例中,this[] 返回一个包含无意义数据的项目。在真实世界场景中,您需要真实数据。
  • 好吧,那是因为该示例不知道想要做什么来检索您的数据。这就是进来的地方。
【解决方案2】:

你还追求什么?一般的想法是 ListBox 在需要数据时会调用您的 IList。它会在特定索引处请求一个项目,然后你传回一个对象。然后,它大概会在该对象上调用 ToString() 并将结果显示在列表中。

实际对象是什么以及从哪里拉取完全取决于您。您可能在内存中使用了一个非常大的数组。您可能从 IsolatedStorage 或 Web 服务中提取。您当然可以使用它来提取文件信息,但我不怀疑任何人都有现成的 IList 实现,所以这是您必须根据您的特定项目实现的部分。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-22
    • 2012-07-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多