1

我在 app.xaml 中定义了如下样式:

<Style TargetType="DataGridCell">
        <Setter Property= "BorderThickness" Value="1"/>            
        <Style.Triggers>
            <Trigger Property="IsSelected" Value="True">
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate TargetType="DataGridCell">
                            <Grid Height="18">
                                <Border BorderBrush="Black" BorderThickness=".2" >
                                    <Border x:Name="border" Background="#992288ff" BorderBrush="Black" BorderThickness=".2">
                                      ......
                      ......
                  ......
                                    </Border>
                                </Border>
                            </Grid>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
            </Trigger>
     </Style.Triggers>

在我的表单中,我为一个单元格定义了一种样式。代码如下:

 <DataGridTextColumn Width="*" Header="Status" Binding="{Binding Status, Mode=TwoWay}" IsReadOnly="True" >
                    <DataGridTextColumn.CellStyle>
                        <Style TargetType="DataGridCell">
                            <Setter Property="Foreground">
                                <Setter.Value>
                                    <Binding Converter="{StaticResource FGColorKey}"/>
                                </Setter.Value>
                            </Setter>
                        </Style>
                    </DataGridTextColumn.CellStyle>
                </DataGridTextColumn>

这里我只定义前景样式。但是我在 app.xaml 中为单元格模板定义的样式不适用于此单元格。请看下面的图片:

在此处输入图像描述

4

1 回答 1

5

通过CellStyle在列上设置属性,该样式将用于该列中的每个单元格,系统将不再关心您定义为资源的样式。

要应用这两种样式,您必须将 cellstyle 中的样式基于 app.xaml 中资源中的样式。

您可以通过BasedOn在样式上设置属性来做到这一点,如下所示:

<DataGridTextColumn.CellStyle>
    <Style TargetType="DataGridCell" BasedOn="{StaticResource {x:Type DataGridCell}}">
        <Setter Property="Foreground">
            <Setter.Value>
                <Binding Converter="{StaticResource FGColorKey}"/>
            </Setter.Value>
        </Setter>
    </Style>
</DataGridTextColumn.CellStyle>
于 2012-11-29T12:51:15.420 回答