WPF DataGridCell, Style.Trigger, основанный на нескольких стилях - PullRequest
1 голос
/ 27 апреля 2011

У меня проблема со стилями в WPF. Я хочу, чтобы все клетки в строке красного цвета. Когда я использую два стиля для одной ячейки MyCellStyle и RightCellStyle (на основе MyCellStyle), результат будет:

изображение

Вот код для 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>

...