Making a separate question, related to comments on the answer to WPF 4: What happened to DataGridColumnHeader?
It appears I can use DataGridHeaderBorder in a UserControl, stand-alone in a ResourceDictionary, but not in a Style's setter of a Template.
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
>
<!-- Works -->
<DataTemplate x:Key="yomama">
<DataGridColumnHeader />
</DataTemplate>
<!-- Compile Error: error MC3074: The tag 'DataGridHeaderBorder' does not exist in XML namespace 'http://schemas.microsoft.com/winfx/2006/xaml/presentation'. -->
<Style x:Key="{x:Type DataGridRowHeader}"
TargetType="{x:Type DataGridRowHeader}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type DataGridRowHeader}">
<Grid>
<DataGridHeaderBorder></DataGridHeaderBorder>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
I can get it to work if I use xmlns:dg="http://schemas.microsoft.com/wpf/2008/toolkit", even though I'm not referencing WPFToolkit in the project. I've verified I'm set to .NET4 and referencing PresentationFramework v4.
Thanks for helping me remove the dg: hack.
Berryl
Try:
xmlns:Themes="clr-namespace:Microsoft.Windows.Themes;assembly=PresentationFramework.Aero"
Nicolas
You can also try this.In this case to change the foreground of the header.
<Style x:Key="Consulta_Grilla_HeaderStyle"
TargetType="{x:Type DataGridColumnHeader}">
<Style.Resources>
<Style TargetType="{x:Type Grid}" >
<Setter Property="TextBlock.Foreground" Value="Yellow"/>
</Style>
</Style.Resources>
</Style>
Add PresentationFramework.Aero.dll in reference of your project.
来源:https://stackoverflow.com/questions/3365350/wpf4-datagridheaderborder-in-a-xaml-style