0

我有一个滚动视图,其中包含大约 614 个网格控件(它用作书籍索引,每个网格指向书中的某个位置),在每个网格内大约 4 个文本块显示有关该选择的信息......

所有文本块内的内容都是静态的。问题是,当加载所有内容时,手机会在一段时间内变得安静无响应……加载该页面并从其他页面导航到该页面需要时间。

我想要另一种解决方案来正确显示所有项目,并且 600 的每个网格视图都有自己的单击事件处理程序,以便能够将其指向书中的页面。

我读到了一些很难做到的方法,我在想也许我只能将索引加载为一个非常“高”的图像,其中写有索引,然后检测用户点击的位置并从中计算索引页面?那效率高吗?或者也许还有别的东西?

4

2 回答 2

2

正在发生的事情是滚动视图正在遍历所有 600 个项目以测量每个条目的高度,以便它知道渲染滚动条的大小。

在这种情况下,最好在 WP7 仅呈现可见项目之前使用 ListBox。即便如此,当您达到 2000 行时,我也听说过性能问题。

如果您对虚拟化的工作原理感兴趣,Samuel Jack 写了一个可扩展性很好的文章(尽管不是针对 WP7),但他对他所做的决定有详细的记录。

https://github.com/samueldjack/VirtualCollection/tree/master/VirtualCollection/VirtualCollection

请参阅他的文章:

  1. 数据虚拟化和隐形分页

  2. Silverlights 虚拟收藏

  3. 虚拟化包装面板

于 2012-08-20T01:31:57.327 回答
0

假设有两个可观察的集合AB。将您的收藏绑定A到您的 UI。每次填满你的收藏B。每次刷新 UI 时都清晰A。加载 UI 后,通过事件触发器开始填充来自的项目B -> A,因为它是一个 Observable 集合,如果您正确使用 INotifyPropertyChanged,项目将开始一个接一个地出现在 UI 上。( Lazy Loading)。您可以根据您的实现更改此方法。我自己正在遵循这种方法。希望它对你也有帮助。

于 2012-08-20T03:32:02.957 回答