In this tutorial I will show how to use incrementally load ListView items in a Windows Phone 8.1 WinRT app.
Here are the steps.
Step 1: Add a ListView in your page
Add a ListView and define its
DataTemplate in your page.
Step 2: Get the ListView’s ScrollViewer
In windows phone 8.1 ListView we cannot get reference of the
ScrollViewer. You can find the
ScrollViewer of your ListView by using
VisualTreeHelper. Get the
ScrollViewer using the following function.
Step 3: Add ListView Loaded event handler
In ListView’s Loaded event handler subscribe to the
ScrollViewer‘s view changed event handler.
Step 4: Fetch more items in the View Changed event handler
In the view changed event handler of the
ScrollViewer calculate the scroll progress and fetch more items if the progress is more than a certain threshold. In our case we call the
fetchCountries function when the
progress is more than 0.7. Also
incall is set to true so that multiple calls at the same time can be avoided.
fetchCountries adds 20 items every time it is called. The function sets the variable
incall to false after all items have been added. Also
endoflist is set to true when no more items are left.
Step 5: Add Main Grid Loaded function
In the Page’s main grid loaded function set the ListView’s
ItemSource and call the fetch function to add initial items.
That’s it. Your ListView with lazy loading will now work perfectly.
Download the full project source code for reference.
Download Lazy Loading ListView
Checkout a related post on using ListView in android.