J'utilise un ControlTemplate
pour définir l'apparence de mes boutons dans une application WPF. De plus, j'aimerais utiliser des styles pour définir certains aspects de mes boutons. Ces styles doivent définir des propriétés sur des éléments définis dans le ControlTemplate
, comme (simplifié):Comment modifier les contrôles modélisés en utilisant les styles
<Window.Resources>
<ControlTemplate x:Key="Template1" TargetType="Button">
<Grid>
<Rectangle Name="rect" Fill="White" Stroke="Blue" StrokeThickness="2"/>
<TextBlock Name="text" Text="Hallo" Foreground="Red" VerticalAlignment="Center" HorizontalAlignment="Center"/>
</Grid>
</ControlTemplate>
<Style x:Key="Style1" TargetType="Button" >
<Setter TargetName="rect" Property="Fill" Value="Red"/>
</Style>
</Window.Resources>
Maintenant, le compilateur se plaint que le TargetName « rect » est pas une cible valide que je peux comprendre depuis un untemplatized Button
doesn » t contient un élément nommé "rect".
Je sais que je pourrais changer le style pour définir le modèle complet, mais je voudrais éviter cela (parce que le modèle est beaucoup plus complexe que celui montré ici et je ne veux pas le dupliquer pour chaque style ...
Est-il possible d'obtenir ce comportement? Peut-être en définissant le droit TargetType
? D'autres idées?