DataGrid の列ヘッダを多段にする

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>

f:id:griefworker:20090227164547p:image


DataGridColumnHeader は System.Windows.Controls.Data アセンブリ内の System.Windows.Controls.Primitives 名前空間にあるので注意!System.Windows.Controls 名前空間ではありません。