Using a GridView in XAML is the primary way to show lists of data. The GridView inherits ItemsControl and behaves like the ListView which behaves like a classic ListBox. The GridView scrolls horizontally, handles selection, rearrangement, and (as we see in this article) also allows for variable sited items.
The GridView’s ItemsPanel is a WrapGrid by default. Unlike a VariableSizedWrapGrid, the WrapGrid creates a strictly uniform grid of items. It’s beautiful, actually. The VariableSizedWrapGrid, on the other hand, lets developers create custom and create UI.
To accomplish a variable grid, the VariableSizedWrapGrid.ColSpan and RowSpan properties must be set on the GridViewItem. Unfortunately, it is impossible to bind to the GridViewItem directly. As a result, it is necessary to create a custom GridView inheriting from GridView and implementing PrepareContainerForItemOverride. The resulting control behaves like a standard GridView with the exception that it sets the GridViewItem ColSpan and RowSpan attached properties.
Look: WrapGrid implementation
Look: VariableSizedWrapGrid implementation
Implementing the Variable grid includes three important steps: 1) inheriting GridView and implementing the PrepareContainerForItemOverride method, 2) changing the ItemPanelTemplate to be a VariableSizedWrapGrid, and 3) include custom ColSpan and RowSpan properties in the models you bind to the repeater. That last one is important.
Let’s see it!
- Download Windows 8 http://aka.ms/w8download
- Download Visual Studio http://aka.ms/w8tools
- Custom grid / Code http://codepaste.net/aopvks
- Enumerate colors / Code http://codepaste.net/j3mzrw
A unique UI is important to make your application stand out. Changing up the grid from the standard, vanilla, boring grid is a great start. Use these techniques to implement the variable grid into your app and start making a splash!
Best of luck!