样式未应用于WPF中的Datagrid标头...资源问题

时间:2009-10-05 22:09:48

标签: wpf datagrid styles

我正在尝试为位于UserControl中的WPF DataGrid使用标头样式。但我明白了:

找不到名为“{DataGridRowHeaderBackgroundStyle}”的资源。资源名称区分大小写。标记文件'WPF中的对象'Microsoft.Windows.Controls.DataGridTextColumn'出错;组件/视图/ dashboardview.xaml'第17行位置50。

我将StaticResource更改为DynamicResource。没有错误,但风格没有改变。

我的样式定义如下:

<Style  x:Key="DataGridRowHeaderBackgroundStyle"  TargetType="{x:Type Primitives:DataGridColumnHeader}">
                    <Setter Property="Background">
                        <Setter.Value>
                            <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                                <GradientStop Color="White" Offset="0"/>
                                <GradientStop Color="#FF4C78F0" Offset="0.983"/>
                                <GradientStop Color="#FFEDF1FD" Offset="0.422"/>
                                <GradientStop Color="#FFACC0F7" Offset="0.069"/>
                            </LinearGradientBrush>
                        </Setter.Value>
                    </Setter>
                </Style>
在Window.xaml中作为资源

   <Window.Resources>
        <ResourceDictionary Source="MainDebugResources.xaml" />
    </Window.Resources>

这是在UserControl中

<data:DataGridTextColumn HeaderStyle="{StaticResource DataGridRowHeaderBackgroundStyle}"  Header="Error" Width="*"
                                           Binding="{Binding Text}" IsReadOnly="True" />

如果我做错了,请告诉我。

由于

2 个答案:

答案 0 :(得分:1)

尝试这包括ResourceDictionary:

<Window.Resources>
    <ResourceDictionary>
                    <ResourceDictionary.MergedDictionaries>
                        <ResourceDictionary Source="MainDebugResources.xaml" />                
                    </ResourceDictionary.MergedDictionaries>
                </ResourceDictionary>
</Window.Resources>

答案 1 :(得分:0)

我遇到了同样的问题,经过大量的实验,我发现“文本块样式”将覆盖“网格列标题样式”,但仅当指定为“应用程序”资源时才适用,而当指定为“窗口资源”时则没有。