Effortless Use of Random Access Data Virtualization
This feature would allow users to easily leverage the IItemsRangeInfo and ISelectionInfo interfaces for random access data virtualization without having to re-implement it themselves.
For instance, users frequently report that certain WinRT APIs like Windows.Storage are slow to return many items compared to their Win32 equivalent, but they like having the extended properties which come from StorageFile. This solution would allow them to use a custom data source, specifying the base collection of items retrieved from, say, a FindFirstFileExFromApp() call. Afterwards, we should be able to handle when a user scrolls different items into view by (example) fetching the "extended" properties of the item like Thumbnail from somewhere other than the base collection.
How specifically?
In other words, when a user scrolls new items into view, the data source should-for the entire visible range-fire an event that users can handle by fetching the extended properties and updating the item in-place. This event handler should have an argument of the item itself (castable object) which the user can utilize when checking for/setting unset properties.
Alternatives considered
- The Windows.Storage.BulkAccess APIs which return a virtualized vector: These are acceptable, but hard to implement and lack support for items with non-normal attributes like shortcut and hidden. I also figured this approach would enable additional scenarios which require this type of data virtualization.
- Implementing the interfaces myself: This is relatively difficult to get right and seems like this could be abstracted for novice users.
- Not using the lower level virtualization: This is a bad approach because it wastes resources loading many unnecessary items.
Additional context & Screenshots
I am essentially asking for an abstraction of the sample detailed here: https://github.com/microsoft/Windows-universal-samples/tree/master/Samples/XamlDataVirtualization
Later on, we could add support for IItemsRangeInfo to DataGrid, but that control is currently in maintenance mode. All in all, this data source would be designed for ListView and GridView.

Effortless Use of Random Access Data Virtualization
This feature would allow users to easily leverage the IItemsRangeInfo and ISelectionInfo interfaces for random access data virtualization without having to re-implement it themselves.
For instance, users frequently report that certain WinRT APIs like Windows.Storage are slow to return many items compared to their Win32 equivalent, but they like having the extended properties which come from StorageFile. This solution would allow them to use a custom data source, specifying the base collection of items retrieved from, say, a FindFirstFileExFromApp() call. Afterwards, we should be able to handle when a user scrolls different items into view by (example) fetching the "extended" properties of the item like Thumbnail from somewhere other than the base collection.
How specifically?
In other words, when a user scrolls new items into view, the data source should-for the entire visible range-fire an event that users can handle by fetching the extended properties and updating the item in-place. This event handler should have an argument of the item itself (castable object) which the user can utilize when checking for/setting unset properties.
Alternatives considered
Additional context & Screenshots
I am essentially asking for an abstraction of the sample detailed here: https://github.com/microsoft/Windows-universal-samples/tree/master/Samples/XamlDataVirtualization
Later on, we could add support for IItemsRangeInfo to DataGrid, but that control is currently in maintenance mode. All in all, this data source would be designed for ListView and GridView.