Cómo detener una animación en C # / WPF?

Tengo algo como esto:

 barProgress.BeginAnimation (RangeBase.ValueProperty, nueva DoubleAnimation (
     barProgress.Value, dNextProgressValue,
     nueva duración (TimeSpan.FromSeconds (dDuration)));

Ahora, ¿cómo DoubleAnimation esa animación (la DoubleAnimation )? La razón por la que quiero hacer esto es porque me gustaría comenzar nuevas animaciones (esto parece funcionar, pero es difícil de decir) y finalmente detener la última animación …

Para detenerlo, BeginAnimation llamar a BeginAnimation con el segundo argumento establecido en null .

Al usar guiones gráficos para controlar una animación, asegúrese de establecer el segundo parámetro en verdadero para establecer la animación como controlable:

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

Hay dos formas de detener una BeginAnimation. El primero es llamar a BeginAnimation nuevamente con el segundo parámetro establecido en null. Esto eliminará todas las animaciones en la propiedad y revertirá el valor a su valor base.

Dependiendo de cómo esté usando ese valor, puede que este no sea el comportamiento que desea. La segunda forma es establecer las animaciones BeginTime en null y luego llamar a BeginAnimation con él. Esto eliminará esa animación específica y dejará el valor en su posición actual.

 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 desea que el valor base vuelva a ser el valor efectivo, debe evitar que la animación influya en la propiedad. Hay tres formas de hacer esto con animaciones de guiones gráficos:

  • Establezca la propiedad FillBehavior de la animación en Detener
  • Eliminar todo el guión gráfico
  • Eliminar la animación de la propiedad individual

Desde MSDN

Cómo: establecer una propiedad después de animarla con un guión gráfico

En mi caso, tuve que usar dos comandos, mi xaml tiene un botón que activa un disparador y su disparador dispara la animación del guión gráfico.

He puesto un botón para detener la animación con este código:

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

No me gusta, pero realmente funciona aquí. ¡Darle una oportunidad!

   .........      

Coloque la animación en un StoryBoard. Llame a Begin () y Stop () en el guión gráfico para comenzar a detener las animaciones.

Puedes usar este código:

 [StoryBoardName].Remove([StoryBoardOwnerControl]);