Implementing a VirtualizingPanel part 4: the goods!

Ok, we finally get to a full implementation with this post. I’ll be showing the implementation of a VirtualizingTilePanel. This is a layout is very similar to the one I used for the layout animation sample. For the sample, I’ve created a small test harness that lets you play with it. Here’s a screenshot of…


Implementing a VirtualizingPanel part 3: MeasureCore

Now that we understand how IItemContainerGenerator works, I’m going to walk through some of the details of how your virtualizing panel’s MeasureOverride should work. I think the easiest way to see how it all works is to just look at some code. In the code below, I’ve excluded the code in MeasureOverride that implements the…


Implementing a VirtualizingPanel part 2: IItemContainerGenerator

In part 1 of this series of posts, I gave an overview of how to write a VirtualizingPanel. One of the keys to the implementation is understanding IItemContainerGenerator. I personally found it a bit nonintuitive to begin with. IItemContainerGenerator will not only help us generate (realize) and destroy (virtualize) the items, but we’ll also use…


Implementing a virtualized panel in WPF (Avalon)

Displaying large sets of data can be challenging to do performantly. If you have a scrolling list of data, one technique to improve performance is to only create the UI elements that are visible. This is refered to as UI virtualization (as opposed to data virtualization, which is the technique of not materializing the data…


Tutorial on IScrollInfo

Ben Constable, our l33t Max guy, is writing up a nice tutorial on how to use IScrollInfo for those times when you need full control of your scrolling view in Avalon. Parts 1 and 2 are up so far.