xaml样式中的WPF4 DataGridHeaderBorder

时间:2010-07-29 17:27:49

标签: wpf xaml wpfdatagrid wpf-4.0 datagridheaderborder

提出单独的问题,与对WPF 4: What happened to DataGridColumnHeader?

的答案的评论相关

看来我可以在UserControl中使用DataGridHeaderBorder,在ResourceDictionary中独立使用,但不能在Style的模板设置器中使用。

<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>

如果我使用xmlns,我可以使用它:dg =“http://schemas.microsoft.com/wpf/2008/toolkit”,即使我没有在项目中引用WPFToolkit。我已经验证我已经设置为.NET4并引用了PresentationFramework v4。

感谢您帮我删除dg:hack。

3 个答案:

答案 0 :(得分:8)

尝试:

xmlns:Themes="clr-namespace:Microsoft.Windows.Themes;assembly=PresentationFramework.Aero"

答案 1 :(得分:2)

你也可以试试这个。在这种情况下改变标题的前景。

<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>

答案 2 :(得分:-1)

在项目参考中添加PresentationFramework.Aero.dll。