Detener la animación WPF, el guión gráfico comienza en xaml pero lo detiene en código subyacente.

Creé un guión gráfico de animación en el archivo xaml. Esa historia comienza en Button.Click. Pero para detener la animación, bash detener el guion gráfico en mi evento personalizado en código subyacente. El código no arroja ninguna excepción, pero cuando mi evento se activó, la animación continúa.

Creo que el problema es con el método Stop. Detener requiere el mismo objeto que comienza la animación para detenerlo. Pero aquí el guión gráfico comienza en WPF xaml y lo estoy deteniendo en código detrás.

¿Alguna solución, cómo obtener el objeto Xaml en el código o cualquier solución alternativa para esto?

CÓDIGO XAML:

             

Código detrás:

  private void EventPublisher_OnScanningFinish(object sender, EventArgs args) { Dispatcher.Invoke(DispatcherPriority.Normal, (Action)delegate() { this.StopScanningAnimation(); }); } private void StopScanningAnimation() { ServerView.StoryBoardServerScrolling.Stop(this); //---------- Not Working //this.ServerView.Server1Static.Visibility = System.Windows.Visibility.Hidden; //this.ServerView.Server2Static.Visibility = System.Windows.Visibility.Hidden; //this.ServerView.Server3Scrolling.Visibility = System.Windows.Visibility.Hidden; //this.ServerView.SearchingGlass.Visibility = System.Windows.Visibility.Hidden; } 

Definir el guión gráfico como un recurso estático,

         

y haz referencia desde tu código de back-end de la siguiente manera:

 StoryBoard board = (StoryBoard)this.FindResource("MovingServer"); board.stop(); 

comience la animación desde el evento ‘clic’ del botón (no sé si definió en xaml, pero así es como se haría si lo hiciera)

  protected void Scanbutton_Click(object Sender, EventArgs e) { StoryBoard board = (StoryBoard)this.FindResource("MovingServer"); board.start(); } 

Resuelvo el problema con el método Stop() de la clase Storyboard como este

 myStoryBoard.Stop(this.LayoutRoot); 

con esta solución no tiene que declarar Storyboard en el recurso.

Estoy agradecido por Timothy por darme una linda Idea. Aquí estoy publicando mi código de trabajo

  /*create this resources as global to that perticular xaml. Need not to be put it in App.xaml MyControl could be Window or Page or UserControl */         /*  */ /*  */        /* ****************************************************************** */ /* Code behind to start/stop animation*/ //Get the resource value first on current object, so that when you start/stop the animation, it work only on current object Storyboard sbImageAnimate = (Storyboard)this.ServerView.FindResource("MovingServer"); //Start the animation on Button Click protected void Scanbutton_Click(object Sender, EventArgs e) { this.MyImage.Visibility = System.Windows.Visibility.Visible; sbImageAnimate.Begin(); } //Stop animation on my own even. You can use it on any event private void EventPublisher_OnFinish(object sender, EventArgs args) { Dispatcher.Invoke(DispatcherPriority.Normal, (Action)delegate() { this.StopScanningAnimation(); }); } private void StopScanningAnimation() { sbImageAnimate.Stop(); this.MyImage.Visibility = System.Windows.Visibility.Hidden; }