如果设置了Tag属性,如何从资源字典应用样式

时间:2013-04-10 09:43:39

标签: wpf xaml triggers styles

我在资源字典中有一个样式,所以

<Style x:Key="heading" TargetType="Label">
    <Setter Property="FontSize" Value="26" />
</Style>

我想让它分配控制是否有一些触发器 条件得到满足。例如

<Style TargetType="Label">
    <Style.Triggers>

        <Trigger Property="Tag" Value="header" >
            <Setter Property="FontSize" Value="26" />
        </Trigger>

    </Style.Triggers>
</Style>

工作正常

<Style TargetType="Label">
    <Style.Triggers>

        <Trigger Property="Tag" Value="header" >
            <Setter Property="Style" Value="{StaticResource heading}" />
        </Trigger>

    </Style.Triggers>
</Style>

给出一个错误,即Style触发器无法更改Style的Style属性 相关目标哪种有意义,但有一种解决方法 对此?

1 个答案:

答案 0 :(得分:0)

诀窍是将触发器放入资源字典而不是样式

<Style TargetType="Label">
    <Style.Triggers>
        <StaticResource ResourceKey="headerTrigger"/>
    </Style.Triggers>
</Style>

并在资源字典中定义触发器,如此

<Trigger x:Key="headerTrigger" Property="Label.Tag" Value="header" >
    <Setter Property="Label.FontWeight" Value="Bold"/>
    <Setter Property="Label.BorderBrush" Value="Red"/>
    <Setter Property="Label.BorderThickness" Value="2"/>
</Trigger>