【问题标题】:Complex header styled in WPFWPF 中的复杂标题样式
【发布时间】:2019-01-29 01:53:20
【问题描述】:

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

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

并使其成为一种样式,这样我就不必为每一列都输入它。如果可能的话,我也想单独命名这些列。按照惯例,我们将不胜感激。

【问题讨论】:

标签: wpf data-binding wpf-controls wpfdatagrid


【解决方案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 是标题。

【讨论】:

  • 这很好用,我只需将 设置为键并删除
  • @RMason:很高兴它有帮助!
  • 只是提示,如果您将相同的DataGridColumnHeader 应用到 allDataGridTextColumn,请通过删除样式 x:Key="ColumnHeaderTemplate" 上的键来全局应用样式,同时删除` HeaderTemplate="{StaticResource ColumnHeaderTemplate }" ` 在每个 DataGridTextColumn 中。它将消除为每个 DataGridTextColumn 应用样式的需要。
猜你喜欢
  • 1970-01-01
  • 2016-01-03
  • 2010-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-19
  • 2016-04-22
相关资源
最近更新 更多