‘Graying Out’ une image de bouton WPF?

J’ai un simple contrôle Button qui contient un object Image tant que contenu. Je veux donc définir l’opacité de l’ Image à 0,5 lorsque le Button est désactivé pour fournir un indice visuel supplémentaire quant à l’état du Button .

Quelle est la manière la plus simple d’accomplir ce résultat dans XAML? Merci de votre aide.

Utilisez un déclencheur dans le style d’image. (Il serait plus naturel de le placer dans le style Button, mais le style Button ne peut pas facilement affecter l’image pour des raisons techniques ennuyeuses. Cela pourrait être fait dans ControlTemplate du Button mais c’est excessif pour ce que vous voulez ici.)

  

Notez que nous profitons ici du fait que l’image sera désactivée lorsque le bouton est désactivé. Nous pouvons donc déclencher directement sur la propriété IsEnabled de l’image. Dans d’autres cas, la propriété Button que nous voulons déclencher peut ne pas être héritée par l’image. dans ce cas, il faudrait utiliser un DataTrigger avec le FindAncestor RelativeSource pour lier le bouton contenant.

Si vous voulez quelque chose de plus générique, mettez ceci dans votre section des ressources pour votre fenêtre ou UserControl.

    

Et dans le bouton actuel, faites ceci

  

Voici un style plus générique que vous pouvez appliquer: