FindMyFiles

FindMyFiles.Virtualization Namespace

Classes
VirtualResultListRandom-access data virtualization for ListView: non-generic IList + INotifyCollectionChanged + IItemsRangeInfo (the only combination that works — microsoft-ui-xaml#1809, ADR-0015). The indexer hands out stable placeholder instances and never fetches; RangesChanged drives 64-row page fetches on a background task, and arriving data fills those same instances in place. The instance lives as long as the page: new query results arrive through Reassign(ISearchResult, IReadOnlyList<PageSeed>, IHighlighter) (seeded pages + one Reset), never by swapping the ItemsSource (ADR-0015). An epoch counter makes fetches started against a previous result fall on the floor. Membership invariant — the WinRT IList adapter trusts these answers blindly: **never vouch for membership falsely.** A false "absent" merely re-realizes a container; a false "present" sends the ListView to GetAt(staleIndex) and dies deep inside XAML (ADR-0015). A row is a member iff its index is inside Count AND the current page cache holds that exact instance in that slot; rows from previous results, evicted pages or transient enumeration answer absent. Mutating entry points enforce the UI thread (always, not just in Debug).
Structs
PageSeedA page of already-fetched rows handed to Reassign(ISearchResult, IReadOnlyList<PageSeed>, IHighlighter), so the viewport is filled the instant a new result is published — never a placeholder flash.