我有一个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;
}