База ControlTemplate на другой ControlTemplate

Я знаю, что должен быть легкий ответ на это, но я не могу его найти.

У меня есть стиль кнопки под названием Hoverbutton .

<Style x:Key="HoverButton" TargetType="Button">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="Button">
                <Border>
                    <ContentPresenter/>
                </Border>
                <ControlTemplate.Triggers>
                    <Trigger Property="IsMouseOver" Value="True">
                        <Setter Property="BorderBrush" Value="Black"/>
                        <Setter Property="Background" Value="WhiteSmoke"/>
                        <Setter Property="Foreground" Value="DarkRed"/>
                    </Trigger>
                </ControlTemplate.Triggers>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
    <Setter Property="BorderBrush" Value="Transparent"/>
    <Setter Property="Background" Value="Transparent"/>
</Style>

Затем я хочу создать еще один «производный» стиль, который основан на Hoverbutton с определенным содержанием. Я сократил сложность вышеуказанного стиля здесь, но это достаточно сложно, чтобы я не хочу копировать и вставлять его.

<Style x:Key="CloseButton" BasedOn="{StaticResource HoverButton}" TargetType="{x:Type Button}">
    <Setter Property="Content">
        <Setter.Value>
            <Path Width="8" Height="8" Stroke="{Binding Foreground, RelativeSource={RelativeSource FindAncestor, AncestorType=Button}}" Data="M0,0 L8,8 M8,0 L0,8" StrokeThickness="2" />
        </Setter.Value>
    </Setter>
</Style>

Это не работает - «Указанный элемент уже является логическим ребенком другого элемента. Отключить его первым». Похоже, мне нужно переопределить шаблон свойство производного стиля, но как-то ссылается на шаблон базового стиля.

Любые идеи?

5
задан H.B. 2 September 2011 в 14:14
поделиться