代码之家  ›  专栏  ›  技术社区  ›  Stafford Williams

覆盖IsSelected触发器的DataGridCell.Template样式

  •  4
  • Stafford Williams  · 技术社区  · 14 年前

    为什么下面的isselected触发器只在代码中缺少模板设置器时工作?如何使两者都能按预期工作?

    我的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 回复  |  直到 14 年前
        1
  •  12
  •   Fredrik Hedblad    14 年前

    当您重新设置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>