我正在使用第三方ContentControl
,其中包含以下主题:
<Style TargetType="{x:Type xyz:XyzControl}" x:Key="XyzControl">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type xyz:XyzControl}">
<ControlTemplate.Resources>
<Style TargetType="Button">
<!-- A lot of styling... -->
</Style>
</ControlTemplate.Resources>
<!-- More template stuff... -->
我想在此控件中添加一些DataTriggers
按钮,但我想保留控件主题中的默认样式。
<xyz:XyzControl>
<Button>
<Button.Style>
<Style TargetType="Button" BasedOn="{???}">
<Style.Triggers>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
</xyz:XyzControl>
我尝试基于{StaticResource {x:Type Button}}
,但这会加载默认的全局按钮样式,而不是此上下文中的默认样式。
答案 0 :(得分:0)
为第三方的按钮样式添加一个键:
<Style TargetType="Button" x:key="xyzbuttonStyle">
然后:
<Style TargetType="Button" BasedOn="{StaticResource xyzbuttonStyle}">
答案 1 :(得分:0)
这是不可能的,因为您无法将ControlTemplate
基于另一个ControlTemplate
。您将不得不重新定义整个模板:
WPF: Is there a way to override part of a ControlTemplate without redefining the whole style?
向Style
添加触发器不会影响或“覆盖”控件ControlTemplate
中定义的触发器,因此您必须覆盖整个ControlTemplate
从头开始。
您当然可以将默认值复制到XAML标记中,然后根据您的要求进行编辑。