I have a scroll view that holds about 614 Grid Controls (it’s used as a book index, with each grid points to certain place at the book), inside each grid about 4 textblocks showing information about that choice….
The content is static inside all the textblocks. The thing is, when loading all that content , the phone becomes quiet unresponsive for a while… it takes time to load that page and navigate to it from another pages.
I want another solution for all that items to be shown correctly and also each grid view of the 600 has it’s own clicked event handler to be able to point it to the page in the book.
I read about some hard ways to do that, I was thinking maybe I can only load the index as a very “tall” image with the index written inside it and then detect where the user tapped and calculate the index page from that ? is that efficient? or maybe there’s something else ?
What is happening is the scroll view is iterating through all 600 items to measure the height of each entry so that it knows how big to render the scrollbars.
It is better to use a ListBox in this case before WP7 will only render the visible items only. Even then, I’ve heard of performance issues when you hit 2000 rows.
If you are interested in how virtualization works, Samuel Jack has written one that scales well (albeit not for WP7), but he has detailed writeups on the decisions he made.
https://github.com/samueldjack/VirtualCollection/tree/master/VirtualCollection/VirtualCollection
See his write ups on:
Data Virtualization and Stealth Paging
Silverlights Virtual Collection
A Virtualizing Wrap Panel