I am trying to use IncrementalLoadingCollection in ItemsRepeater. The GetPagedItemsAsync in the IIncrementalSource is not called automatically when scrolled . Should I manually trigger LoadMoreAsync in the scrollviewer_viewchanged ? . I cannot use GridView as I want UniformGridLayout. Is there any way to fix this?
Yes, you need to call LoadMoreItemsAsync() manually. ListView and GridView support ISupportIncrementalLoading when their ItemsSource implements it, but ItemsRepeater does not.
Something like this should give some direction:
// You might need to adjust (calculate?) this value
// based on your UI layout and design.
private uint ItemsCountPerPage { get; } = 10;
private async void ScrollViewerControl_ViewChanged(object sender, ScrollViewerViewChangedEventArgs e)
{
if (sender is not ScrollViewer scrollViewer)
{
return;
}
double difference = scrollViewer.ScrollableHeight - scrollViewer.VerticalOffset;
if (difference < 100)
{
_ = await PeopleSource.LoadMoreItemsAsync(ItemsCountPerPage);
}
}
private async void ScrollViewerControl_Loaded(object sender, Microsoft.UI.Xaml.RoutedEventArgs e)
{
_ = await PeopleSource.LoadMoreItemsAsync(ItemsCountPerPage);
}