2009-11-04 4 views
1

J'ai un WPD Datatemplate qui contient un DataTriggers qui commence à animer la couleur d'un visuel. Comment puis-je démarrer l'animation en commençant par la valeur actuelle de la propriété de couleur?Démarre l'animation qui commence par la valeur actuelle (handoff).

Depuis qu'il pourrait y avoir une autre animation active, je ne peux pas commencer une nouvelle, mais lorsque je retire l'animation à l'aide DataTriggers ExitAction et RemoveStoryboard la propriété position est définie à sa valeur par défaut. Au lieu de cela, je voudrais un transfert de l'un à l'autre.

Est-ce une limitation de WPF qui ne peut tout simplement pas être fait?

<DataTrigger Binding="{Binding Path=State}" Value="Active"> 
    <DataTrigger.EnterActions> 
     <BeginStoryboard x:Name="activeStoryboard" HandoffBehavior="SnapshotAndReplace"> 
      <Storyboard> 
       <ColorAnimation To="Green" FillBehavior="HoldEnd" Duration="00:00:0.25" 
           Storyboard.TargetName="stateBrush" 
           Storyboard.TargetProperty="Color" /> 
      </Storyboard> 
     </BeginStoryboard> 
    </DataTrigger.EnterActions> 
    <DataTrigger.ExitActions> 
     <RemoveStoryboard BeginStoryboardName="activeStoryboard" /> 
    </DataTrigger.ExitActions> 
</DataTrigger> 
<DataTrigger Binding="{Binding Path=State}" Value="Error"> 
    <DataTrigger.EnterActions> 
     <BeginStoryboard x:Name="errorStoryboard" HandoffBehavior="SnapshotAndReplace"> 
      <Storyboard> 
       <ColorAnimation To="Red" FillBehavior="HoldEnd" Duration="00:00:0.25" 
           Storyboard.TargetName="stateBrush" 
           Storyboard.TargetProperty="Color" /> 
      </Storyboard> 
     </BeginStoryboard> 
    </DataTrigger.EnterActions> 
    <DataTrigger.ExitActions> 
     <RemoveStoryboard BeginStoryboardName="errorStoryboard" /> 
    </DataTrigger.ExitActions> 
</DataTrigger> 
+0

Je serais vraiment intéressé par une solution à cela. Avez-vous trouvé comment résoudre ce problème? – Wouter

Répondre

1

Il devrait fonctionner si vous commencez la deuxième animation, même si FillBehavior est réglé sur Stop!

Vérifiez la section suivante sur msdn: FillBehavior="Stop" and HandoffBehavior with Multiple Animations

+1

MERCI! Vous avez essayé d'animer une rotation d'ellipse et vous l'avez ramené à l'angle 0 lorsque le déclencheur est sorti. La réponse consistait à mettre en pause le storyboard précédent et à en créer un nouveau sans la propriété "From"! – Clint

Questions connexes