是否可以扩展xaml setter?

时间:2016-07-13 10:51:18

标签: xaml

XAML样式是否可以从具有setter“template”的样式继承,继承所有现有触发器并使用另一个触发器扩展它?

示例样式:

<Style x:Key="BigButton" TargetType="{x:Type RadioButton}">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type RadioButton}">
                <ControLTemplate.Triggers>
                    <Trigger Property="IsMouseOver" Value="true">
                        <Setter Property="Opacity" Value="1"/>
                    </Trigger>
                    <Trigger Property="IsPressed" Value="true">
                        <Setter Property="Background" Value="Red"/>
                    </Trigger>
                </ControlTemplate.Triggers>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

我的大多数按钮都有这两个触发器的样式。 所以现在问我的问题。 如果我有以下新风格:

<Style x:Key="BigButton" TargetType="{x:Type RadioButton}" 
  based on="{StaticResource BigButton}">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType={x:Type RadioButton}">
                <ControlTemplate.Triggers>
                    <Trigger Property="IsEnabled" Value="true">
                        <Setter Property="Background" Value="White"/>
                    </Trigger>
                </ControlTemplate.Triggers>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

使用此样式会覆盖以前的模板设置器。 所以我的问题是: 有没有办法不覆盖以前的模板设置器,只在新样式中添加触发器?

我希望你能帮助我。 如果缺少信息,请写下

问候 理查德

我尝试过:

基于

试图从控制模板中取出触发器

1 个答案:

答案 0 :(得分:1)

触发器是ControlTemplate的一部分,所以不,你不能只是添加它们而不覆盖模板(这是一个羞耻的IMO,但就是这样)。