RMason
RMason

Reputation: 25

Complex header styled in WPF

Is it possible to take something like this:

<DataGridTextColumn.Header>
    <StackPanel Orientation="Horizontal">
        <Label Content="BlahBlahBlah"/>
        <Expander x:Name="Blah_Filter"/>
    </StackPanel>
</DataGridTextColumn.Header>

And make it a style so I don't have to type it out for every column. I would like to name the columns individually also, if that's possible. Per usual any help is appreciated.

Upvotes: 0

Views: 80

Answers (1)

dontbyteme
dontbyteme

Reputation: 1261

You can change the header ContentTemplate with something like

<Window.Resources>
    <Style TargetType="{x:Type DataGridColumnHeader}"
           x:Key="ColumnHeaderTemplate">
        <Setter Property="ContentTemplate">
            <Setter.Value>
                <DataTemplate>
                    <StackPanel Orientation="Horizontal">
                        <Label Content="{Binding}" />
                        <Expander />
                    </StackPanel>
                </DataTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</Window.Resources>

<DataGrid>
    <DataGrid.Columns>
        <DataGridTextColumn Binding="{Binding Column1Content}"
                            HeaderTemplate="{StaticResource ColumnHeaderTemplate}"
                            Header="BlahBlahBlah1" />
        <DataGridTextColumn Binding="{Binding Column2Content}"
                            HeaderTemplate="{StaticResource ColumnHeaderTemplate}"
                            Header="BlahBlahBlah2" />
    </DataGrid.Columns>
</DataGrid>

where Column1Content and Column2Content are the bindings to your cell datas and BlahBlahBlah1 and BlahBlahBlah1 are the header titles.

Upvotes: 1

Related Questions