无法从ResourceDictionary中定义的样式应用CellStyle

时间:2014-09-05 14:01:42

标签: wpf styling

我为数据网格定义了一些样式,但未应用CellStyle,ColumnHeaderStyle和RowStyle的样式。其他风格如背景颜色和rowheight工作正常。 默认样式基于FirstFloor.ModernUI的数据网格样式

如果我将样式直接放在数据网格上,那么一切正常。也是在设计时

<DataGrid
        Style="{StaticResource BilagDatagridStyle}"
        ColumnHeaderStyle="{StaticResource BilagsColumnHeaderStyle}"
        CellStyle="{StaticResource DataGridCellNoInteractionStyle}"
        RowStyle="{StaticResource DataGridRowNoInteractionStyle}"

没有它不能正常工作

<DataGrid
        Style="{StaticResource BilagDatagridStyle}"

这是我正在使用的样式:

<Style x:Key="BilagsColumnHeaderStyle" TargetType="{x:Type DataGridColumnHeader}">
    <Setter Property="FontSize" Value="12"/>
    <Setter Property="FontWeight" Value="SemiBold"/>
    <Setter Property="HorizontalAlignment" Value="Left"/>
    <Setter Property="Background" Value="Transparent"/>
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type DataGridColumnHeader}">
                <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" 
                                          SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" 
                                          VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
                                          Margin="4,3"/>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

<Style x:Key="DefaultReadOnlyGridStyle" TargetType="{x:Type DataGrid}"  BasedOn="{StaticResource {x:Type DataGrid}}">
 <Setter Property="CanUserAddRows" Value="False"/>
 <Setter Property="CanUserDeleteRows" Value="False"/>
 <Setter Property="CanUserSortColumns" Value="False"/>
 <Setter Property="AutoGenerateColumns" Value="False"/>
 <Setter Property="VerticalAlignment" Value="Stretch"/>
 <Setter Property="HorizontalAlignment" Value="Stretch"/>
 <Setter Property="IsReadOnly" Value="True"/>
 <Setter Property="SelectionMode" Value="Single"/>
 <Setter Property="HeadersVisibility" Value="Column"/>
 <Setter Property="Width" Value="Auto"/>
 <Setter Property="RowHeight" Value="30"/>

<Style x:Key="BilagDatagridStyle" TargetType="{x:Type DataGrid}" BasedOn="{StaticResource DefaultReadOnlyGridStyle}">
<Setter Property="CellStyle" Value="{StaticResource DataGridCellNoInteractionStyle}"/>
<Setter Property="RowStyle" Value="{StaticResource DataGridRowNoInteractionStyle}"/>
<Setter Property="ColumnHeaderStyle" Value="{StaticResource BilagsColumnHeaderStyle}"/>

它被BilagsColumnHeaderStyle中的模板部分覆盖了。我一直试图写一个单独的模板,但我不能正确的语法。也许如果我分割样式和模板部分它会起作用吗?

非常感谢任何建议

0 个答案:

没有答案