Role com suavidade por centenas de milhares de itens. VirtualList desenha só as linhas visíveis.
Por que ajuda
- Suave com listas enormes
- Só as linhas visíveis
- Simples
Onde se encaixa
- Logs
- Catálogos
- Seleções

Exemplo
<VirtualList TItem="string" Label="Log lines" Items="_lines" @bind-SelectedItem="_selected" Height="14rem" ItemHeight="34" />
<p>Selected: @(_selected ?? "none")</p>
<VirtualList TItem="Person" Label="People with a template" Items="_people" Height="12rem" ItemHeight="44" Selectable="false">
<ItemTemplate Context="person">
<strong>@person.Name</strong> <span>@person.Department</span>
</ItemTemplate>
</VirtualList>
@code {
private readonly List<string> _lines = Enumerable.Range(1, 200000).Select(n => $"Line {n:N0}: request processed").ToList();
private readonly List<Person> _people = Enumerable.Range(0, 5000).Select(n => SampleData.People[n % SampleData.People.Count] with { Name = $"{SampleData.People[n % SampleData.People.Count].Name} {n + 1}" }).ToList();
private string? _selected;
} Um pequeno trecho. Adicione @using RayCraft.Blazor.Components à sua página e use um modo de renderização interativo.
Incluído no RayCraft Free. Há exemplos funcionais no repositório do GitHub (MIT); ele contém código de exemplo e demonstração, não o código da biblioteca.