J'ai un ControlTemplate qui utilise la même couleur dans plusieurs éléments. Sur certains déclencheurs (par exemple OnMouseOver), j'aimerais changer cette couleur. Autant que je puisse voir, je dois définir un setter pour que chaque élément change de couleur. Existe-t-il un moyen de référencer une ressource partagée dans le modèle auquel tous les éléments contenus peuvent accéder, et qui peut être modifiée par un déclencheur, de sorte que je n'ai pas à traiter chaque élément?Modifier la couleur commune dans ControlTemplate
Voici un (composé) exemple:
<ControlTemplate x:Key="myTemplate" TargetType="{x:Type Button}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Ellipse Fill="red" Grid.Column="0"/>
<Ellipse Fill="red" Grid.Column="1"/>
<ContentPresenter Grid.ColumnSpan="2" VerticalAlignment="Center"/>
</Grid>
</ControlTemplate>
Lorsque le contrôle est désactivé, je veux que les ellipses soient gris, sans mettre les deux explicitement, par exemple Je ne suis pas veux écrire
<Trigger Property="IsEnabled" Value="False">
<Setter TargetName="_ellipse1" Property="Fill" Value="Grey"/>
<Setter TargetName="_ellipse2" Property="Fill" Value="Grey"/>
</Trigger>
mais définir la couleur des deux ellipses avec juste un poseur .
Cela a fait l'affaire de la manière la plus simple, merci. (bien que je devais comprendre que vous ne devez pas définir la couleur dans ControlTemplate, mais dans le style exclusivement.) –
Merci - exactement la syntaxe dont j'avais besoin aussi –