Create a ListView control that implements a GridView view mode, displays content in groups.
<Window xmlns='http://schemas.microsoft.com/winfx/2006/xaml/presentation'
xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml'>
<Window.Resources>
<XmlDataProvider x:Key="MyData" XPath="/Info">
<x:XData>
<Info xmlns="">
<Item ID="1" Name="Book 1" Price="$2.05" Author="Author A" Catalog="Business"/>
<Item ID="2" Name="Book 2" Price="$0.00" Author="Author B" Catalog="Language"/>
<Item ID="3" Name="Book 3" Price="$19.00" Author="Author C" Catalog="Language"/>
<Item ID="4" Name="Book 4" Price="$81.50" Author="Author D" Catalog="Business"/>
<Item ID="5" Name="Book 5" Price="$9.00" Author="Author E" Catalog="Health"/>
<Item ID="6" Name="Book 6" Price="$18.50" Author="Author F" Catalog="Language"/>
</Info>
</x:XData>
</XmlDataProvider>
<CollectionViewSource x:Key='src' Source="{Binding Source={StaticResource MyData}, XPath=Item}">
<CollectionViewSource.GroupDescriptions>
<PropertyGroupDescription PropertyName="@Catalog" />
</CollectionViewSource.GroupDescriptions>
</CollectionViewSource>
</Window.Resources>
<ListView ItemsSource='{Binding Source={StaticResource src}}' BorderThickness="0">
<ListView.GroupStyle>
<GroupStyle>
<GroupStyle.ContainerStyle>
<Style TargetType="{x:Type GroupItem}">
<Setter Property="Margin" Value="0,0,0,5"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type GroupItem}">
<Expander IsExpanded="True" BorderBrush="#FFA4B97F"
BorderThickness="0,0,0,1">
<Expander.Header>
<DockPanel>
<TextBlock FontWeight="Bold" Text="{Binding Path=Name}"
Margin="5,0,0,0" Width="100"/>
<TextBlock FontWeight="Bold"
Text="{Binding Path=ItemCount}"/>
</DockPanel>
</Expander.Header>
<Expander.Content>
<ItemsPresenter />
</Expander.Content>
</Expander>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</GroupStyle.ContainerStyle>
</GroupStyle>
</ListView.GroupStyle>
<ListView.View>
<GridView>
<GridViewColumn Header="ID"
DisplayMemberBinding="{Binding XPath=@ID}"
Width="200" />
<GridViewColumn Header="Name"
DisplayMemberBinding="{Binding XPath=@Name}"
Width="240" />
<GridViewColumn Header="Price"
DisplayMemberBinding="{Binding XPath=@Price}"
Width="180" />
<GridViewColumn Header="Author"
DisplayMemberBinding="{Binding XPath=@Author}"
Width="180" />
</GridView>
</ListView.View>
</ListView>
</Window>
Related examples in the same category