2010-03-16 19 views

Répondre

2

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> 
+0

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

+0

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. –

+0

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