显式DataGrid CellStyle Setter在同一个上下文中被隐式单元格式覆盖?

时间:2010-09-29 07:46:35

标签: wpf datagrid override styles

我对WPFToolkit(.NET 3.5)中的DataGrid和.NET 4.0中的内置版本有一个奇怪的问题:

使用DataGrid的显式设置器创建一个键控CellStyle - 样式到另一个键控样式时,它可以正常工作。但是当为DataGridCell创建无密钥样式时,它将覆盖CellStyle样式中的显式DataGrid - setter。这似乎是错的。这是设计还是错误?

<Window.Resources>
    <Style TargetType="DataGridCell">
        <Setter Property="Background" Value="Blue" />
    </Style>
    <Style x:Key="CellStyle1" TargetType="DataGridCell">
        <Setter Property="Background" Value="Green" />
    </Style>
    <Style TargetType="DataGrid">
        <Setter Property="Background" Value="Yellow" />
        <Setter Property="CellStyle" Value="{StaticResource CellStyle1}" />
    </Style>
    <XmlDataProvider x:Key="xmldata" XPath="data/*">
        <x:XData>
            <data xmlns="">
                <item1 />
                <item2 />
                <item3 />
            </data>
        </x:XData>
    </XmlDataProvider>
</Window.Resources>
<Grid>
    <DataGrid ItemsSource="{Binding Source={StaticResource xmldata}}" />
</Grid>

1 个答案:

答案 0 :(得分:0)

这有效:

<DataGrid ItemsSource="{Binding Source={StaticResource xmldata}}" 
          CellStyle="{StaticResource CellStyle1}" />

似乎Datagrid的非键控风格弱于DataGridCell的非键控风格。这很奇怪,但这是一个有点复杂的问题:无家可归的母亲vs无钥匙的孩子,谁应该获胜?