DataGridCell.Template Стиль, перекрывающий IsSelected Trigger - PullRequest
4 голосов
/ 17 ноября 2010

Почему нижеприведенный триггер IsSelected работает только в том случае, если в коде нет шаблона Setter? Как я могу заставить оба функционировать как ожидалось?

В моем теге Application.Resources есть следующее:

<Style TargetType="{x:Type DataGridCell}">
    <Style.Triggers>
        <Trigger Property="IsSelected" Value="True">
            <Setter Property="Background" Value="Red"/>
        </Trigger>
    </Style.Triggers>

    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type DataGridCell}">
                <ContentPresenter VerticalAlignment="Center"></ContentPresenter>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

1 Ответ

12 голосов
/ 17 ноября 2010

При повторном шаблонировании DataGridCell вы также теряете границу, которая фактически является элементом управления, который рисует фон. Добавьте это, и это сработает.

<Style TargetType="{x:Type DataGridCell}">
    <Style.Triggers>
        <Trigger Property="IsSelected" Value="True">
            <Setter Property="Background" Value="Red"/>
        </Trigger>
    </Style.Triggers>
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type DataGridCell}">
                <Border Background="{TemplateBinding Background}">
                    <ContentPresenter VerticalAlignment="Center"></ContentPresenter>
                </Border>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>
...