DataGrid の列ヘッダを多段にするには、DataGridColumnHeader のテンプレートを変更すればいいです。
<UserControl x:Class="DataGridSample.Page" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:data="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data" xmlns:primitives="clr-namespace:System.Windows.Controls.Primitives;assembly=System.Windows.Controls.Data" Width="400" Height="300"> <Grid x:Name="LayoutRoot" Background="White"> <data:DataGrid> <data:DataGrid.Resources> <Style x:Name="SampleStyle" TargetType="primitives:DataGridColumnHeader"> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="primitives:DataGridColumnHeader"> <StackPanel> <TextBlock Text="伝票種"/> <TextBlock Text="伝票日付"/> </StackPanel> </ControlTemplate> </Setter.Value> </Setter> </Style> </data:DataGrid.Resources> <data:DataGrid.Columns> <data:DataGridTemplateColumn HeaderStyle="{StaticResource SampleStyle}"/> <data:DataGridTextColumn Header="伝票番号"/> </data:DataGrid.Columns> </data:DataGrid> </Grid> </UserControl>
DataGridColumnHeader は System.Windows.Controls.Data アセンブリ内の System.Windows.Controls.Primitives 名前空間にあるので注意!System.Windows.Controls 名前空間ではありません。