When an items control is first shown, all the elements needed to render a viewport full of items are created.Also, as items approach the viewport, the framework updates the UI elements in cached item templates with the bound data objects.Additionally, the following List View events are raised only when using an Items Wrap Grid or an Items Stack Panel: Choosing Group Header Container, Choosing Item Container, and Container Content Changing.
It uses Managed Extensibility framework to do all this.
There are two key factors in performance when it comes to collections: one is the time spent by the UI thread creating items; the other is the memory used by both the raw data set and the UI elements used to render that data.
For smooth panning/scrolling, it's vital that the UI thread do an efficient and smart job of instantiating, data-binding, and laying out items.
Some panels allow child elements unlimited space, examples being Scroll Viewer and a Grid, with auto-sized rows or columns.
When a virtualized Items Control is placed in a panel like that, it takes enough room to display all of its items, which defeats virtualization.