Estou trabalhando com WinUI 3 em C# e tentando habilitar a virtualização em um ListView para que apenas os itens necessários sejam exibidos. Quero usar o IncrementalLoadingCollection do Windows Community Toolkit, mas encontrei um problema em que ele não pode ser encontrado.
Instalei a versão mais recente do pacote NuGet do Windows Community Toolkit. (CommunityToolkit.WinUI.Helpers). No entanto, quando tento usar IncrementalLoadingCollection, o compilador mostra um erro indicando que ele não é reconhecido.
using Microsoft.UI.Xaml;
using Microsoft.UI.Xaml.Controls;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using CommunityToolkit.Common.Collections;
using CommunityToolkit.WinUI;
using System.Threading.Tasks;
using System.Threading;
using CommunityToolkit.WinUI.Helpers;
public sealed partial class SampleControl : UserControl
{
public SampleControl()
{
this.InitializeComponent();
// Error
var collection = new IncrementalLoadingCollection<SampleDataIncrementalSource, SampleData>();
MyListView.ItemsSource = collection;
}
}
public class SampleData
{
public string data1 { get; set; }
public string data2 { get; set; }
public SampleData( string _data1, string _data2 )
{
this.data1 = _data1;
this.data2 = _data2;
}
}
public class SampleDataIncrementalSource : IIncrementalSource<SampleData>
{
private int _currentPage = 0;
private const int _pageSize = 20;
public async Task<IEnumerable<SampleData>> GetPagedItemsAsync( int pageIndex, int pageSize )
{
await Task.Delay( 0 );
var items = new List<SampleData>();
for( int i = 0; i < pageSize; i++ )
{
items.Add( new SampleData(
$"Data1-{pageIndex * pageSize + i + 1}",
$"Data2-{pageIndex * pageSize + i + 1}" ) );
}
return items;
}
public async Task<IEnumerable<SampleData>> GetPagedItemsAsync( Int32 pageIndex, Int32 pageSize, CancellationToken cancellationToken = default )
{
var items = await GetPagedItemsAsync( _currentPage, _pageSize );
_currentPage++;
return items;
}
}
Certifique-se de que você instalou o pacote NuGet correto, CommunityToolkit.WinUI.Collections neste caso. Você pode verificar isso no aplicativo Windows Community Toolkit Gallery .
Além disso, no arquivo de projeto (*.csproj), edite as versões de destino para 22621 .
Você também pode precisar disto aqui:
Você pode encontrar mais sobre isso nas notas de lançamento .