Je veux changer l'image du bouton dans le code ci-dessous en fonction de son état, c'est-à-dire d'utiliser une image différente pour activer et désactiver l'état. Merci. P> p>
4 Réponses :
Fondamentalement, créez un style pour le bouton qui permet d'afficher un objet d'image dans sa propriété de contenu, puis a une gâchette qui vérifie l'état activé des boutons et quand il est vrai que ce soit une image, et à tout autre. Les temps sont l'autre image. p>
Vous pouvez utiliser un style avec des déclencheurs comme celui-ci:
<Style TargetType="{x:Type Button}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<StackPanel Orientation="Horizontal" >
<Image Name="PART_Image" Source="path to normal image" />
</StackPanel>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Source" Value="path to mouse over image" TargetName="PART_Image"/>
</Trigger>
<Trigger Property="IsPressed" Value="True">
<Setter Property="Source" Value="path to pressed image" TargetName="PART_Image"/>
</Trigger>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Source" Value="path to disabled image" TargetName="PART_Image"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
N'y a-t-il aucun moyen d'utiliser une sorte de filtre de grisage (et d'autres) pour générer les images à la volée? Devons-nous avoir des images essentiellement codées des différents états?
Oui, vous pouvez utiliser la même logique que celle décrite ci-dessus et modifier la propriété d'opacité de l'image. Vous pouvez également faire des choses comme l'ajout d'une bordure au modèle et le montrer / cacher lorsque la souris est sur l'image ou change la couleur de fond ...
@Malross - Découvrez cet article de codeProject, qui montre comment utiliser un convertisseur de valeur pour créer une image désactivée à la volée. Je suis avec vous, qu'il est frustrant de devoir écrire du code pour faire des choses qui gagnent gratuitement, mais au moins vous n'avez pas à préfontrer les images. codeProject.com/kb/wpf/grayScaleButton.aspx
J'ai utilisé le code suivant pour créer des images à l'intérieur des boutons pour avoir la moitié de l'opacité lorsque le bouton est désactivé et cela fonctionne bien!
<Style TargetType="Button">
<Style.Resources>
<Style TargetType="Image">
<Style.Triggers>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Opacity" Value="0.5" />
</Trigger>
</Style.Triggers>
</Style>
</Style.Resources>
</Style>