I have a little problem with WPF. Here is my style in which I created a template for the DataGrid column header.
<Window.Resources> <Style x:Key="DataGridColumnHeaderStyle1" TargetType="{x:Type DataGridColumnHeader}"> <Setter Property="VerticalContentAlignment" Value="Center"/> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type DataGridColumnHeader}"> <Grid> <Microsoft_Windows_Themes:DataGridHeaderBorder BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" IsClickable="{TemplateBinding CanUserSort}" IsPressed="{TemplateBinding IsPressed}" IsHovered="{TemplateBinding IsMouseOver}" Padding="{TemplateBinding Padding}" SortDirection="{TemplateBinding SortDirection}" SeparatorBrush="{TemplateBinding SeparatorBrush}" SeparatorVisibility="{TemplateBinding SeparatorVisibility}"> <Microsoft_Windows_Themes:DataGridHeaderBorder.Background> <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"> <GradientStop Color="#FF7EE4FF" Offset="0"/> <GradientStop Color="#FF66D6F3" Offset="1"/> <GradientStop Color="#FF0097BE" Offset="0.5"/> </LinearGradientBrush> </Microsoft_Windows_Themes:DataGridHeaderBorder.Background> <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/> </Microsoft_Windows_Themes:DataGridHeaderBorder> </Grid> </ControlTemplate> </Setter.Value>
Here is my control over the presentation of a DataGrid in a Grid:
<DataGrid Margin="46.667,41.333,102,87"> <DataGrid.Columns> <DataGridTemplateColumn Header="Status" Width="*" HeaderStyle=" {DynamicResource DataGridColumnHeaderStyle1}"/> </DataGrid.Columns> </DataGrid>
The problem is that I see the changed header in the VS designer or in Blend, but when I launch my default application header style. Can anyone help? Thanks in advance.
EDIT
Just found an interesting thing. When I set the style in
DataGridTemplateColumn.HeaderStyle
working
<DataGrid Margin="46.667,41.333,102,87"> <DataGrid.Columns> <DataGridTemplateColumn Header="Status" Width="*"> <DataGridTemplateColumn.HeaderStyle> <Style TargetType="{x:Type DataGridColumnHeader}"> <Setter Property="VerticalContentAlignment" Value="Center"/> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type DataGridColumnHeader}"> <Grid> <Microsoft_Windows_Themes:DataGridHeaderBorder BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" IsClickable="{TemplateBinding CanUserSort}" IsPressed="{TemplateBinding IsPressed}" IsHovered="{TemplateBinding IsMouseOver}" Padding="{TemplateBinding Padding}" SortDirection="{TemplateBinding SortDirection}" SeparatorBrush="{TemplateBinding SeparatorBrush}" SeparatorVisibility="{TemplateBinding SeparatorVisibility}"> <Microsoft_Windows_Themes:DataGridHeaderBorder.Background> <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"> <GradientStop Color="#FF7EE4FF" Offset="0"/> <GradientStop Color="#FF66D6F3" Offset="1"/> <GradientStop Color="#FF0097BE" Offset="0.5"/> </LinearGradientBrush> </Microsoft_Windows_Themes:DataGridHeaderBorder.Background> <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/> </Microsoft_Windows_Themes:DataGridHeaderBorder> </Grid> </ControlTemplate> </Setter.Value> </Setter> </Style> </DataGridTemplateColumn.HeaderStyle> </DataGridTemplateColumn> </DataGrid.Columns> </DataGrid>
Why does it matter?
wpf
pavel
source share