【问题标题】:DataGridCell.Template Style overriding IsSelected TriggerDataGridCell.Template 样式覆盖 IsSelected 触发器
【发布时间】:2011-05-11 06:07:57
【问题描述】:

为什么只有在代码中没有模板设置器时,下面的 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>

【问题讨论】:

  • 看起来模板设置器的存在也删除了默认的蓝色选择背景

标签: wpf templates datagrid styles


【解决方案1】:

当您重新模板化 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>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-31
    • 1970-01-01
    • 2011-01-15
    • 1970-01-01
    • 2011-02-05
    相关资源
    最近更新 更多