eQuantic.UIeQuantic.UI
Docs
Playground
GitHub
DocsLists & data
ListView
View source
1 min read
A recycling list that only builds the rows you can see. Ten thousand rows cost what a screenful costs.
1
using eQuantic.UI.Components;
WINDOWING
Row 1
Row 2
Row 3
Row 4
Row 5
Row 6
Row 7
Row 8
Row 9
Row 10
Row 11
Row 12
Row 13
Row 14
Row 15
Row 16
the rest is two spacers
Usage
1
2
3
4
5
6
new ListView(count: 10_000, itemExtent: 44, itemBuilder: i => RowFor(i))
{
Width = SizeValue.Fill,
Height = SizeValue.Fill, // the list is a WINDOW — give it one
Overscan = 3,
}
API
Prop
Type
Default
Description
count
int
Logical row count (constructor).
itemExtent
float
Fixed row height (constructor). Variable extents are outside v1.
itemBuilder
Func<int, VisualNode>
Called only for rows in the window plus overscan.
Overscan
int
3
Rows built beyond each edge to absorb a fling.
Width
SizeValue
Auto
Usually Fill.
Height
SizeValue
Auto
Must be given — a window without a height is not a window.
States
State
Rendering
First frame
Builds against a viewport guess
Converged
The realized frame reports the true viewport; the next frame corrects
Scrolling
Pixels move without a rebuild until a row crosses the overscan margin
Accessibility
The scroll region reports the total count, so readers announce "row 40 of 10,000" rather than the window size.
When to use
Any collection past a few hundred rows.
Avoid
Nesting one inside an auto-height parent.
WARNINGScope (v1): vertical lists with a fixed ItemExtent.
NOTEEvery dimension resolves through Sizing.*(SizeVariant) and the token scales — never a literal. Source: src/eQuantic.UI.Components/ListView.cs.