Question

J'ai quelque chose comme ça :

barProgress.BeginAnimation(RangeBase.ValueProperty, new DoubleAnimation(
    barProgress.Value, dNextProgressValue,
    new Duration(TimeSpan.FromSeconds(dDuration)));

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

Était-ce utile?

La solution

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

Autres conseils

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**
)

Il existe deux façons d’arrêter un BeginAnimation.La première consiste à appeler à nouveau BeginAnimation avec le deuxième paramètre défini sur null.Cela supprimera toutes les animations sur la propriété et revenir la valeur revient à sa valeur de base.

Selon la façon dont vous utilisez cette valeur, ce comportement peut ne pas être souhaité.La deuxième façon consiste à définir les animations BeginTime sur null, puis à appeler BeginAnimation avec.Cela supprimera cette animation spécifique et laissera 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);

Si vous voulez que la valeur de base redevienne la valeur effective, vous devez empêcher l'animation d'influencer la propriété.Il y a trois façons de le faire avec des animations de storyboard:

  • Définissez la propriété Fillbehavior de l'animation pour arrêter
  • Supprimer tout le storyboard
  • Supprimer l'animation de la propriété individuelle

Depuis MSDN

Comment:Définir une propriété après l'avoir animée avec un storyboard

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!

<Trigger.EnterActions>
       <BeginStoryboard x:Name="myStory">
       .........
       </BeginStoryboard>
</Trigger.EnterActions>
<Trigger.ExitActions>
       <StopStoryboard BeginStoryboardName="myStory"/>
</Trigger.ExitActions>

Placez l'animation dans un StoryBoard.Appelez Begin() et Stop() sur le storyboard pour démarrer et arrêter les animations.

Vous pouvez utiliser ce code :

[StoryBoardName].Remove([StoryBoardOwnerControl]);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top