WPF新控件模板中旧的控件模板

3
我使用一个来自外部库的定制控件,它有一个带有ControlTemplate的属性。
  <Style x:Key="{x:Type controls:HeaderDiscountButton}" TargetType="{x:Type controls:HeaderDiscountButton}" BasedOn="{StaticResource {x:Type core:ValueButton}}">
        <Setter Property="core:ButtonWithPopup.PopupTemplate">
            <Setter.Value>
                <ControlTemplate> 
                   some complicated xaml code
                </ControlTemplate>
          </Setter.Value>
        </Setter>
  </Style>

我希望覆盖它,但在我的新ControlTemplate中使用旧的,例如

  <Style x:Key="{x:Type controls:HeaderDiscountButton}" TargetType="{x:Type controls:HeaderDiscountButton}" BasedOn="{StaticResource {x:Type core:ValueButton}}">
        <Setter Property="core:ButtonWithPopup.PopupTemplate">
            <Setter.Value>
                <ControlTemplate> 
                   <StackPanel>
                      <Border>some complicated xaml code</Border>
                      <Border>some additional xaml code</Border>
                   </StackPanel>
                </ControlTemplate>
          </Setter.Value>
        </Setter>
  </Style>

我希望避免复制整个旧代码。
1个回答

2
很抱歉,这是不可能的。您确实可以基于另一个样式创建一个样式并覆盖特定的设置器,但您不能“覆盖”或继承仅部分ControlTemplate。不幸的是,您必须重新定义整个模板。因此,在这种情况下,您实际上需要复制(整个)原始模板,然后根据您的要求进行编辑。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接