Vous pouvez le faire avec un EventTrigger.
Vous pouvez définir le déclencheur dans une propriété FrameworkElement.Triggers de n'importe quel conteneur du bouton et des cibles d'animation.
<StackPanel
Orientation="Horizontal">
<StackPanel.Triggers>
<EventTrigger
SourceName="TheButton"
RoutedEvent="Button.Click">
<BeginStoryboard>
<Storyboard>
<ColorAnimation
Storyboard.TargetName="LimeRect"
Storyboard.TargetProperty="Fill.Color"
To="Red" />
<ColorAnimation
Storyboard.TargetName="RedRect"
Storyboard.TargetProperty="Fill.Color"
To="Lime" />
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</StackPanel.Triggers>
<Button
x:Name="TheButton"
Content="Play" />
<Rectangle
x:Name="LimeRect"
Fill="Lime"
Width="50"
Height="50" />
<Rectangle
x:Name="RedRect"
Fill="Red"
Width="50"
Height="50" />
</StackPanel>
S'il y a un chemin par rapport à vos objectifs, vous pouvez utiliser Storyboard.Target="{Binding PathToTarget}"
en place de Storyboard.TargetName="TargetName"
.
EDIT: (voir commentaires)
Si vous animez le bouton lui-même, vous pouvez mettre les éléments déclencheurs droit sur le bouton et vous ne avez pas besoin de noms cibles.
Exemple - Animer la taille d'un ToggleButton:
<ToggleButton
Content="Toggle"
Width="50"
Height="50">
<ToggleButton.Triggers>
<EventTrigger
RoutedEvent="ToggleButton.Checked">
<BeginStoryboard>
<Storyboard>
<DoubleAnimation
Duration="00:00:00.2"
Storyboard.TargetProperty="Width"
To="100" />
<DoubleAnimation
Duration="00:00:00.2"
Storyboard.TargetProperty="Height"
To="100" />
</Storyboard>
</BeginStoryboard>
</EventTrigger>
<EventTrigger
RoutedEvent="ToggleButton.Unchecked">
<BeginStoryboard>
<Storyboard>
<DoubleAnimation
Duration="00:00:00.2"
Storyboard.TargetProperty="Width"
To="50" />
<DoubleAnimation
Duration="00:00:00.2"
Storyboard.TargetProperty="Height"
To="50" />
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</ToggleButton.Triggers>
</ToggleButton>
Hey omsdsmr, merci pour votre réponse :) grandement appréciée! Je vois ce que tu veux dire, mais dans ce cas, c'est le bouton lui-même qui doit être animé. I.e .: quand vous cliquez dessus, il sera plus grand, quand vous le cliquerez à nouveau, il reviendra à sa taille normale .. – bomortensen
Ah ... Vous avez de la chance, ce que vous voulez est en réalité plus facile que je pensais. J'ai mis à jour ma réponse avec un autre exemple. Bonne chance. –
omdsmr: Je pense que c'est peut-être ce que je cherche :) Je vais essayer quand je serai au bureau demain et je vous dirai comment ça fonctionne. Merci beaucoup pour votre aide! – bomortensen