A while ago, when we were designing the architecture of RadListPicker for Windows Phone, we thought that the most common scenario to use the control is with 5 – 20 items at most. That is why we decided not to implement any virtualization techniques and all the items, both in the inline and the popup parts were realized upon control load. The user feedback however was different – we received many requests for a faster list picker, which can easily deal with 50 – 250 or even more items. And we listened to our users – as of Q2 2011 our list picker will get a significant performance boost when used in Popup mode.
As I mentioned, in its previous version, when in popup mode, the control would realize all the items in its inline part, regardless of the fact that it will never be physically expanded and only the selected item will be displayed. Now, when items count is more than the number specified by the InlineModeThreshold property, the control will realize only the selected item in its inline part. This implies an enormous optimization which results in the instant loading of the control. But this is not all – the items in the Popup items control are now visualized using a VirtualizingStackPanel instance which works pretty well in this common scenario and further donates to the overall optimization.
Following is a comparison table that illustrates the actual benefits of that optimization:
|Inline part loading time (ms) |
|50 items ||100 items ||200 items ||500 items |
| Before optimization ||577
| After optimization ||21
As you can see the loading time is not affected by the number of items because only the selected item is realized. This is really a huge performance boost and we believe that our users will love this new improvement.
Do not miss the upcoming Q2 2011 official release, expected by the mid of July. It is a major milestone for our Windows Phone tools as we introduce the first official version of RadChart, RadCalendar and RadBusyIndicator as well as many valuable additions – such as the checkboxes support in RadDataBoundListBox – to existing controls. As always - we will be happy to hear your feedback which helps us to build even greater tools.