我有一个滚动视图,它包含大约614个网格控件(它用作书籍索引,每个网格指向书中的某个位置),每个网格内部大约有4个文本块显示有关该选项的信息.... / p>
内容在所有文本块中都是静态的。问题是,当加载所有内容时,手机会在一段时间内变得安静无响应...加载该页面并从其他页面导航到该页面需要时间。
我想要正确显示所有项目的另一个解决方案,并且600的每个网格视图都有自己的点击事件处理程序,以便能够将其指向书中的页面。
我读到了一些难以实现的方法,我想也许我只能将索引加载为一个非常“高”的图像,并在其中写入索引,然后检测用户点击的位置并从中计算索引页面?这样有效吗?或者还有其他的东西?
答案 0 :(得分:2)
正在发生的事情是滚动视图正在迭代所有600个项目以测量每个条目的高度,以便它知道渲染滚动条的大小。
在这种情况下,最好在使用ListBox之前,WP7只会渲染可见项目。即使这样,当你遇到2000行时,我也听说过性能问题。
如果你对虚拟化的工作方式感兴趣,塞缪尔杰克已经编写了一个可以很好地扩展的版本(尽管不适用于WP7),但他对他做出的决定有详细的写作。
https://github.com/samueldjack/VirtualCollection/tree/master/VirtualCollection/VirtualCollection
见他的写作:
答案 1 :(得分:0)
假设有两个可观察的集合A
和B
。将您的收藏A
绑定到您的用户界面。每次填写集合B
。每次刷新UI时都清楚A
。加载UI后,通过事件触发器开始填充来自B -> A
的项目,因为它是一个Observable Collection,如果您正确使用INotifyPropertyChanged,项目将逐一开始出现在UI上。 (Lazy Loading
)。您可以根据您的实施改变这种方法。我自己正在遵循这种方法。希望它对你也有帮助。