Different views at design time and at runtime

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?

0
wpf
source share
1 answer

It seems that DynamicResource does not correctly resolve at runtime. Try switching DynamicResource to StaticResource as follows:

 <DataGridTemplateColumn Header="Status" Width="*" HeaderStyle="{StaticResource DataGridColumnHeaderStyle1}"/> 

For more on the differences between DynamicResource and StaticResource, see this other StackOverflow question: What is the difference between StaticResource and DynamicResource in WPF?

+1
source share

All Articles