это не сработает.Есть много причин для этого.
- вы помещаете ЩЕТКУ в DataGridColumn.HeaderStringFormatProperty >> это не будет работать.
- это не будет передано заголовку столбца в любом случае.
, чтобы сделать это, вам нужно понимать, что dataContext DataGridColumnHeader НЕ установлен в соответствующий столбец по умолчанию.Вы должны настроить его вручную.
посмотрите на этот пост: https://stackoverflow.com/a/5249223/479384
Теперь, насколько вам интересно, я бы сделал что-то так же, как ввышеупомянутая ссылка:
добавьте необходимые свойства зависимостей в класс вашего DataGridColumn:
private static readonly DependencyProperty ColumnHeaderTextProperty = DependencyProperty.Register("ColumnHeader", typeof(string), typeof(MyDataGridColumn));
public string ColumnHeaderText
{
get { return (string)(GetValue(ColumnHeaderTextProperty)); }
set { SetValue(ColumnHeaderTextProperty, value); }
}
private static readonly DependencyProperty ColumnHeaderBackgroundProperty = DependencyProperty.Register("ColumnHeader", typeof(Brush), typeof(MyDataGridColumn));
public Brush ColumnHeaderBackground
{
get { return (Brush)(GetValue(ColumnHeaderBackgroundProperty )); }
set { SetValue(ColumnHeaderBackgroundProperty , value); }
}
, а затем установите dataContext в конструкторе вашего столбца следующим образом:
public MyDataGridColumn()
{
Header = this;
ColumnHeaderText = "My header text";
}
(вместо Header = "my header text";
, который у вас был ранее)
и, наконец, обновите ваш шаблон заголовка:
<DataGrid.ColumnHeaderStyle>
<Style TargetType="{x:Type DataGridColumnHeader}">
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<TextBlock Text="{Binding ColumnHeaderText}" Foreground="Blue" Background="{Binding ColumnHeaderBackground}">
<TextBlock.LayoutTransform>
<RotateTransform Angle="-90" />
</TextBlock.LayoutTransform>
</TextBlock>
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
</DataGrid.ColumnHeaderStyle>
затем в вашем коде, когда вы захотите изменить заголовокbackground, просто сделайте:
((MyDataGridColumn)(this.dgSkillsMatrix.Columns[4])).ColumnHeaderBackground = Brushes.Red;
EDIT: если у вас нет специального класса для ваших столбцов, вы должны иметь возможность сделать это с прикрепленными свойствами, и вы всегда можетепоместите код, который я написал в конструктор, где-нибудь еще так:
myColumn.Header = myColumn;
myColumn.SetValue(columnHelper.ColumnHeaderTextProperty, "my Header Text");
myColumn.SetValue(columnHelper.ColumnHeaderBackgroundProperty, Brushes.Red);
отредактируйте для hashlock ^^