WPF DataGrid HeaderStyle

时间:2017-06-06 18:43:42

标签: wpf datagrid

我有一个datagrid,我想以不同的方式设置列标题的样式。样式存储在资源字典中,该资源字典被加载并合并到窗口中。如果我有一个如下定义的标题:

 <DataGridTemplateColumn x:Uid="columnPartNumber" x:Name="columnPartNumber" Header="Part #"                                             
                         HeaderStyle="{DynamicResource PartsPartNumberHeader}">

未应用标题样式。

如果我在整个数据网格上有一个样式

 <DataGrid  CanUserAddRows="False" AutoGenerateColumns="False"
                      SelectionMode="Single"                      
                      Style="{DynamicResource PartsPartListDataGrid}">

在我的风格中,我设置了ColumnHeaderStyle属性,该样式将应用于我的所有列。 HeaderStyle不是用于设置单个列标题样式的正确属性吗?可以使用DynamicResource设置吗?

相同资源词典文件中的样式:

 <Style TargetType="{x:Type DataGridColumnHeader}" x:Key="BasePartListColumnHeader" >
        <Setter Property="HorizontalContentAlignment" Value="Center" />
        <Setter Property="FontWeight" Value="Bold" />
        <Setter Property="Background" Value="White" />
        <Setter Property="BorderThickness" Value="1,0,1,0"/>
        <Setter Property="BorderBrush" Value="LightGray" />
    </Style>

<Style TargetType="{x:Type DataGridColumnHeader}" x:Key="PartsPartListPartNumberHeader" BasedOn="{StaticResource BasePartListColumnHeader}">
        <Setter Property="HorizontalContentAlignment" Value="Center" />
        <Setter Property="FontWeight" Value="Bold" />
        <Setter Property="Background" Value="White" />
        <Setter Property="BorderThickness" Value="1,0,1,0"/>
        <Setter Property="BorderBrush" Value="LightGray" />
    </Style>

 <Style TargetType="{x:Type DataGrid}" x:Key="PartsPartListDataGrid">
        <Setter Property="FontSize" Value="14"/>
        <Setter Property="FontFamily" Value="../resources/Futura Font Family/#Futura Std Book" />
        <Setter Property="Margin" Value="3,10,0,0"/>
        <Setter Property="BorderThickness" Value="0"/>
        <Setter Property="Background" Value="white"/>
        <Setter Property="GridLinesVisibility" Value="Horizontal" />
        <Setter Property="HorizontalGridLinesBrush" Value="Gray" />
        <Setter Property="RowStyle" Value="{DynamicResource PartsPartListRowStyle}" />
        <Setter Property="CellStyle" Value="{DynamicResource PartsPartListCellStyle}" />
        <Setter Property="ColumnHeaderStyle" Value="{DynamicResource BasePartListColumnHeader}" />
        <Setter Property="RowHeaderWidth" Value="0" />
    </Style>

*编辑 嗯,这不是最漂亮的,但是如果我在代码中的Loaded事件中应用样式,那么它就可以了。

 object headerStyle = this.TryFindResource("PartsPartListPartNumberHeader");
            if (headerStyle != null)
            {
                columnPartNumber.HeaderStyle = (Style)headerStyle;
            }

0 个答案:

没有答案