C# 基于ControlTemplate资源中定义的样式的样式

C# 基于ControlTemplate资源中定义的样式的样式,c#,wpf,xaml,C#,Wpf,Xaml,我正在使用第三方ContentControl,它具有以下主题: <Style TargetType="{x:Type xyz:XyzControl}" x:Key="XyzControl"> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type xyz:XyzControl}">

我正在使用第三方
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... -->

我试图基于
{StaticResource{x:Type Button}}
,但这会加载默认的全局按钮样式,而不是此上下文中的默认样式。

为第三方的按钮样式添加一个键:

<Style TargetType="Button" x:key="xyzbuttonStyle">

然后:

<Style TargetType="Button" BasedOn="{StaticResource xyzbuttonStyle}">

为第三方的按钮样式添加一个键:

<Style TargetType="Button" x:key="xyzbuttonStyle">

然后:

<Style TargetType="Button" BasedOn="{StaticResource xyzbuttonStyle}">


这是不可能的,因为您不能将一个
控制模板
建立在另一个
控制模板
的基础上。您必须将整个模板重新定义为一个整体:

样式添加触发器不会影响或“覆盖”控件的
ControlTemplate
中定义的触发器,因此您必须从头覆盖整个
ControlTemplate


当然,您可以将默认模板复制到XAML标记中,并根据您的要求进行编辑。

这是不可能的,因为您不能将一个
控制模板
建立在另一个
控制模板
上。您必须将整个模板重新定义为一个整体:

样式添加触发器不会影响或“覆盖”控件的
ControlTemplate
中定义的触发器,因此您必须从头覆盖整个
ControlTemplate


当然,您可以将默认标记复制到XAML标记中,并根据您的要求进行编辑。

Thx,但第三方被称为第三方,因为它不是我的第三方:-)我无法更改该代码。Thx,但第三方被称为第三方,因为它不是我的第三方:-)我无法更改该代码。