2012-05-23 4 views
1

Je voudrais montrer une animation du bouton, avant que l'événement click du bouton ne soit déclenché. J'utilise XAML suivant pour y parvenir, mais il semble que le déclencheur Button.IsPressed se déclenche après un événement click.Problème d'animation WPF sur le bouton click

Comment régler le déclencheur pour qu'il affiche l'animation avant l'événement click?

<Button x:Name="button" 
     Width="131" 
     Height="37" 
     Content="Button" 
     Margin="0,0,0,22" 
     Click="button_Click"> 
    <Button.Style> 
     <Style TargetType="{x:Type Button}"> 
      <Style.Triggers> 
       <Trigger Property="Button.IsPressed" Value="True"> 
        <Trigger.ExitActions> 
         <BeginStoryboard> 
          <Storyboard> 
           <DoubleAnimation Storyboard.TargetProperty="Width" 
               From="130" 
               To="0" 
               Duration="0:0:2"/> 
          </Storyboard> 
         </BeginStoryboard> 
        </Trigger.ExitActions> 
       </Trigger> 
      </Style.Triggers> 
     </Style> 
    </Button.Style> 
</Button> 

EDIT: J'ai essayé cela, mais même chose.

<EventTrigger RoutedEvent="PreviewMouseLeftButtonDown"> 
    <BeginStoryboard> 
     <Storyboard> 
      <DoubleAnimation Storyboard.TargetProperty="Width" 
          From="130" 
          To="0" 
          Duration="0:0:2"/> 
     </Storyboard> 
    </BeginStoryboard> 
</EventTrigger> 

Répondre

0

Vous n'avez pas mentionné quand exactement vous voulez que l'animation pour commencer, mais vous pouvez essayer d'utiliser PreviewMouseLeftButtonDown

+0

Il est le bouton de DataGrid qui suppriment essentiellement la colonne. donc avant qu'il ne soit supprimé, je veux montrer une animation (changer la largeur du bouton de 130 à 0), puis supprimer toute la colonne. L'animation est parfaitement là, seule chose que je dois appeler avant de passer au code derrière pour supprimer la colonne réelle –

+0

Pls voir le contenu mis à jour (Editer) –

+0

Cela ressemble à une condition de concurrence. Il serait préférable de démarrer l'animation dans le code et de suspendre l'exécution jusqu'à ce que le storyboard soit terminé. Si vous ne le faites pas, il est probable que la ligne sera supprimée avant la fin des animations. Je ne suis pas au courant d'un événement/override correct à cette fin mais vous pourriez essayer OnExecutedDelete –