Je sais qu'il doit y avoir une réponse facile à cela mais je ne peux pas le trouver.Base d'un ControlTemplate sur un autre ControlTemplate
J'ai un style de bouton appelé 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>
Je veux alors créer un autre style « dérivé » qui repose sur un HoverButton
avec un contenu spécifique. J'ai réduit la complexité du style ci-dessus, mais c'est assez complexe que je ne veux pas le copier et le coller.
<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>
Cela ne fonctionne pas - "L'élément spécifié est déjà l'enfant logique d'un autre élément. Déconnectez-le d'abord." Il semble que je doive redéfinir la propriété Template
du style dérivé, mais référence le style du style de base.
Des idées?
Je vais supposer que le TargetType étant manquant sur le deuxième style était juste un glissement (donc je l'ai ajouté) ... –