UI Virtualizing WrapPanel
The control is a UI Virtualization capable WrapPanel control for WPF, Silverlight, and Windows Phone.
It is extremely helpful in boosting the performance of UI, and improving the User-experience (UX), especially when you have the need to associate large amounts of data with an ItemsControl that has to display content in an automatic Wrapping fashion.
What it does?
It works just like the stock Wrap Panel control, but in addition, this control automatically viritualizes, realizes, and arranges the associated content, by automatically creating and destroying the containers for the content items on-the-fly.
It also supports various other advanced features / capabilities, such as...
Sample Projects (C#):
The control supports virtualization even when grouping – i.e. perform virtualization and also continue to render the collection data using custom grouping setup on it.
The control offers three kinds of header & children content rendering., viz:
The StandaloneRow mode is similar to LineBreak mode, except that in this mode, the group header will live in its own row/column than the relevant grouped items.
The control supports being able to customize the various drawing aspects of the Grouped mode, giving you the control on rendering up to the pixel level.
The following are some of the rendering aspects that you can control:
4. Customizing the Height of the Group Header
By default, the control will render the header with a Height of 24.0 units, but you can specify the header height if you are setting up a custom header via your custom data template (as described above).
To support custom height for the header rendering, there is a property in the control named GroupHeaderItemCustomHeight.
The control can be used to automatically "UI Virtualize" any content that can be scrolled.
The typical Use-case for this control is to use it as the ItemsPanelTemplate for an ItemsControl, but you can use this control to virtualize any scrollable content, not just only as ItemsPanelTemplate.
For example, you can host it inside a scrollviewer (as part of an ItemsControl's ControlTemplate) to UI virtualize the scrollviewer's content.
Screenshot of using the control to virtualize the scrollviewer's content, as part of the ItemsControl's ControlTemplate
7. Custom Layout Management
The control is written from scratch, and implements custom logic for content layout and scrolling.
The control supports two layout orientations viz., Horizontal and Vertical Orientations, and fully custom implements IScrollInfo interface for scrolling support.
8. On-Demand Realizing of Desired Child Item
The control is capable of realizing a specified item from the associated data-bound source and scroll it into view, given the item's index.
9. Configurable Virtualization Scheme
The control allows you to choose from two virtualization schemes - viz.,
10. Custom Item Dimension / Sizing
The child items content hosted in the control can have differing size of Height and Width values.
11. Animation of Wrapping Action
The control can (optionally) perform an animation while wrapping the child elements from one row/line to the next.
The control is MVVM pattern friendly, and hence the control's capabilities can be used straight from your viewmodel.