UI Virtualization is an awkward terminology that describes WPF UI controls that load and and dispose child elements on demand (based on their visibility) to reduce memory footprint. ListBox and ListView use a class called VirtualizingStackPanel by default to achieve higher performance.
I found this control, which is really helpful, a virtualized canvas which produces a scrollable Canvas object that manages its children with a quadtree. It produces some great results and can easily be tweaked to your needs.
Are there any other guides or sample wpf controls that deal with this issue? Maybe generic one's that deal with dynamic memory allocation of gui objects in other languages and toolkits?
Virtualization technique in WPF improves the rendering performance of UI elements. By applying virtualization, the layout system ensures that only the visible items of a container are rendered on the screen.
UI virtualization stores only visible items in memory but in a data-binding scenario stores the entire data structure in memory. In contrast, data virtualization stores only the data items that are visible on the screen in memory.
The VirtualizingStackPanel calculates the number of visible items and works with the ItemContainerGenerator from an ItemsControl (such as ListBox or ListView) to create UI elements only for visible items.
Dan Crevier has a small tutorial on building a VirtualisingTilePanel.
Ben Constable has written a tutorial on IScrollInfo, which is an essential part of the virtualisation: Part 1, Part 2, Part 3 and Part 4.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With