触发器中未设置的样式

时间:2013-12-18 13:59:53

标签: wpf styles datatrigger

我已经为这个控件定义了一般的样式,现在我将为给定的控件定义一个样式。

然后我有DataTrigger,如果它满足条件我不会取消设置控件上定义的样式并返回到我定义的一般样式。

我不想像下面的样本那样设置硬编码值,而是回到一般风格。

有任何建议吗?

这是我的代码示例:

                    <DataGrid.Style>
                    <Style TargetType="DataGridRow">
                        <Setter Property="Foreground" Value="Gray"/>
                        <Setter Property="FontWeight" Value="Light"/>
                        <Setter Property="FontStyle" Value="Italic" />
                        <Style.Triggers>
                            <DataTrigger Binding="{Binding VoidedOn}" Value="{x:Null}">

                                    <Setter Property="Foreground" Value="?"/>
                                <Setter Property="FontWeight" Value="?"/>
                                <Setter Property="FontStyle" Value="?" />
                            </DataTrigger>
                        </Style.Triggers>
                    </Style>
                </DataGrid.Style>

有什么建议吗? 感谢

1 个答案:

答案 0 :(得分:0)

不幸的是,xaml中没有ClearValue。当然,你可以创建一个附加的行为,特别是对于那些为这些属性调用ClearValue的情况,但这对很少有很多工作。

最简单,最聪明的解决方案是为FontStyle创建2个资源,并在正确的setter中使用它们。

<FontStyle x:Key="voidedOnStyle">Italic</FontStyle>
<FontStyle x:Key="normalStyle">Normal</FontStyle>

<Setter Property="FontStyle" Value="{StaticResource voidedOnStyle}" />
<Style.Triggers>
    <DataTrigger Binding="{Binding VoidedOn}" Value="{x:Null}">
        <Setter Property="FontStyle" Value="{StaticResource normalStyle}" />
    </DataTrigger>
</Style.Triggers>