Is it possible to apply ListViewBase.LoadMoreItemsAsync method for a pagination in a grouped ListView (CollectionViewSource). Or maybe you know another way, please let me know.
Asked
Active
Viewed 226 times
1 Answers
0
You can do this like this: On your ListView add "Loaded" event with this code:
private void LvPictures_OnLoaded(object sender, RoutedEventArgs e)
{
ScrollViewer viewer = GetScrollViewer(this.LvPictures);
viewer.ViewChanged += LvPictures_ViewChanged;
}
public static ScrollViewer GetScrollViewer(DependencyObject depObj)
{
if (depObj is ScrollViewer) return depObj as ScrollViewer;
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(depObj); i++)
{
var child = VisualTreeHelper.GetChild(depObj, i);
var result = GetScrollViewer(child);
if (result != null) return result;
}
return null;
}
and now in ViewChangeEvent you can specify when you want to load more items and actually do this:
private async void LvPictures_ViewChanged(object sender, ScrollViewerViewChangedEventArgs e)
{
ScrollViewer view = (ScrollViewer)sender;
double progress = view.VerticalOffset / view.ScrollableHeight;
if (progress > 0.8 & !_incallFilesList && NextPagePicturesAvailable)
{
_incallFilesList = true;
GetNextPicturesPageAsync();
}
_incallFilesList = false;
}

Piachu
- 195
- 1
- 13