WPF DataGridCell,Style.Trigger,基于多种样式

时间:2011-04-27 12:35:26

标签: wpf xaml styles datatrigger

我在WPF中遇到了这个样式的问题。 我希望每一排细胞都是红色的。 当我为一个单元格MyCellStyle和RightCellStyle(基于MyCellStyle)使用两种样式时,结果是:

image

这里可能是MyCellStyle和RightCellStyle的代码

<Style x:Key="MyCellStyle" TargetType="DataGridCell">
<Setter Property="Template">
    <Setter.Value>
        <ControlTemplate TargetType="DataGridCell">
            <Border Background="{TemplateBinding Background}">
                <ContentPresenter VerticalAlignment="Center" />
            </Border>
        </ControlTemplate>
    </Setter.Value>
</Setter>
<Style.Triggers>
    <Trigger Property="IsSelected" Value="True">
        <Setter Property="Background" Value="{StaticResource SelectedRowColor}" />
        <Setter Property="BorderBrush" Value="#FFDFE9F5" />
        <Setter Property="BorderThickness" Value="1" />
    </Trigger>
</Style.Triggers>

<Style x:Key="RightCellStyle" TargetType="DataGridCell" BasedOn="{StaticResource MyCellStyle}">
<Setter Property="Template">
    <Setter.Value>
        <ControlTemplate TargetType="DataGridCell">
            <Border Background="{TemplateBinding Background}">
                <ContentPresenter HorizontalAlignment="Right" VerticalAlignment="Center" />
            </Border>
        </ControlTemplate>
    </Setter.Value>
</Setter>

这是我设置红色的部分

<DataGrid.Style>
<Style TargetType="DataGrid" BasedOn="{StaticResource {x:Type DataGrid}}">
    <Setter Property="CellStyle">
        <Setter.Value>
            <Style TargetType="DataGridCell" BasedOn="{StaticResource MyCellStyle}">
                <Style.Triggers>
                    <DataTrigger Binding="{Binding Path=IsNew}" Value="True">
                        <Setter Property="Foreground" Value="Red" />
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </Setter.Value>
    </Setter>
</Style>

0 个答案:

没有答案