WPF中样式复杂的标头

时间:2018-08-22 18:25:34

标签: wpf data-binding wpf-controls wpfdatagrid

是否可以采取这样的方式?

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

并使其成为一种样式,这样我就不必在每一列中都键入它。如果可能的话,我也想分别命名各列。通常,我们会提供任何帮助。

1 个答案:

答案 0 :(得分:1)

您可以使用类似

的标题来更改标题ContentTemplate
<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>

其中Column1ContentColumn2Content是对单元格数据的绑定,而BlahBlahBlah1BlahBlahBlah1是标题。