49 votes

Comment arrêter une animation en C # / WPF?

J'ai quelque chose comme ça:

barProgress.BeginAnimation (RangeBase.ValueProperty, nouvelle DoubleAnimation (
    barProgress.Value, dNextProgressValue,
    nouvelle durée (TimeSpan.FromSeconds (dDuration)));

Maintenant, comment arrêteriez-vous cette animation (le DoubleAnimation )? La raison pour laquelle je veux le faire, c'est parce que je voudrais démarrer de nouvelles animations (cela semble fonctionner, mais c'est difficile à dire) et finalement arrêter la dernière animation ...

85voto

TheSmurf Points 10872

Pour l'arrêter, appelez à nouveau BeginAnimation avec le deuxième argument défini sur null.

32voto

user3837 Points 1051

Lorsque vous utilisez des storyboards pour contrôler une animation, assurez-vous de définir le deuxième paramètre sur true afin de définir l'animation comme contrôlable:

 public void Begin(
    FrameworkContentElement containingObject,
    **bool isControllable**
)
 

18voto

BruceLH Points 71

Il y a deux façons d'arrêter un BeginAnimation. Le premier est l'appel de BeginAnimation à nouveau avec le deuxième paramètre est défini sur null. Cela permettra d'éliminer toutes les animations de la propriété et de rétablir la valeur de retour à sa valeur de base.

Selon la façon dont vous utilisez cette valeur cela peut ne pas être le comportement que vous souhaitez. La deuxième façon est de définir les animations BeginTime null alors appel BeginAnimation avec elle. Cela permettra d'éliminer spécifiques d'animation et de laisser la valeur à sa position actuelle.

DoubleAnimation myAnimation = new Animation();
// Initialize animation
...

// To start
element.BeginAnimation(Property, myAnimation);

// To stop and keep the current value of the animated property
myAnimation.BeginTime = null;
element.BeginAnimation(Property, myAnimation);

8voto

Nick Points 1818

Si vous voulez que la valeur de base pour devenir la valeur effective de nouveau, vous devez arrêter l'animation d'influencer la propriété. Il existe trois façons de faire cela avec storyboard animations:

  • Définir l'animation du FillBehavior propriété à Arrêter
  • Supprimer l'ensemble du Storyboard
  • Supprimer l'animation de la la propriété individuelle

À partir de MSDN

Comment: Définir une Propriété Après l'Animer avec un Storyboard

7voto

Junior Mayhé Points 5202

Dans mon cas, j'ai dû utiliser deux commandes, mon xaml a un bouton qui déclenche un déclencheur, et son déclencheur déclenche l'animation du storyboard.

J'ai mis un bouton pour arrêter l'animation avec ce code derrière:

 MyBeginStoryboard.Storyboard.Begin(this, true);
MyBeginStoryboard.Storyboard.Stop(this);
 

Je n'aime pas ça mais ça marche vraiment ici. Essaie!

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X