1 | initial version |
The process of utilizing IncrementalLoadingCollection from CommunityToolkit to enable Incremental loading in WinUI3 is as follows:
Install the Microsoft.Toolkit.WinUI.Controls NuGet package.
In your XAML code, create a ListView or GridView control and set its ItemsSource property to an instance of the IncrementalLoadingCollection class.
<controls:ListView ItemsSource="{x:Bind MyIncrementalCollection}" />
private readonly MyDataSource _dataSource = new MyDataSource();
public IncrementalLoadingCollection<MyDataItem, MyDataSource> MyIncrementalCollection { get; } = new IncrementalLoadingCollection<MyDataItem, MyDataSource>(_dataSource, pageSize: 20);
public async Task<IEnumerable<MyDataItem>> GetPagedItemsAsync(int pageIndex, int pageSize)
{
// Retrieve data from the data source for the specified page
var data = await _myDataService.GetDataAsync(pageIndex, pageSize);
// Map the data to MyDataItem objects
var items = data.Select(d => new MyDataItem { Name = d.Name, Value = d.Value });
return items;
}
<controls:GridView ItemsSource="{x:Bind MyIncrementalCollection}">
<controls:GridView.Columns>
<controls:GridViewColumn Header="Name" Width="Auto" DisplayMemberBinding="{Binding Name}" />
<controls:GridViewColumn Header="Value" Width="Auto" DisplayMemberBinding="{Binding Value}" />
</controls:GridView.Columns>
</controls:GridView>