【发布时间】:2010-09-02 20:05:59
【问题描述】:
我对 WPF 有一个小问题。 这是我为 DataGrid 列标题创建模板的样式。
<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>
这是我在 Grid 中的 DataGrid 视图控件:
<DataGrid Margin="46.667,41.333,102,87">
<DataGrid.Columns>
<DataGridTemplateColumn Header="Status" Width="*" HeaderStyle=" {DynamicResource DataGridColumnHeaderStyle1}"/>
</DataGrid.Columns>
</DataGrid>
问题是我可以在 VS 设计器或 Blend 中看到修改后的标题,但是当我运行我的应用程序时,标题样式是默认的。任何人都可以帮忙吗?提前致谢。
编辑
刚刚发现有趣的事情。当我把 Style 放入
DataGridTemplateColumn.HeaderStyle
它正在工作
<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>
为什么会有所不同?
【问题讨论】:
标签: wpf