我使用外部库中的自定义控件,它具有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>
我想避免复制整个旧代码
答案 0 :(得分:1)
恐怕这是不可能的。您确实可以将Style
基于另一个Style
并覆盖特定的设置者,但不能“覆盖”或仅继承ControlTemplate
的一部分。不幸的是,您必须(重新)定义整个模板。
因此,在这种情况下,您实际上需要复制(整个)原始模板,然后根据您的要求进行编辑。