Pause/Resume WPF storyboard

Viewed 3856

I've read about a dozen articles on how to pause and resume an WPF storyboard, but I just can't get it to work. Here's my problem: I have a User control with a storyboard. The storyboard looks like this:

 <UserControl.Resources>
    <Storyboard x:Key="TheStoryboard" RepeatBehavior="Forever">
      <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[2].(RotateTransform.Angle)" Storyboard.TargetName="Arc1">
        <EasingDoubleKeyFrame KeyTime="0" Value="0"/>
        <EasingDoubleKeyFrame KeyTime="0:0:2" Value="90"/>
        <EasingDoubleKeyFrame KeyTime="0:0:4" Value="180"/>
        <EasingDoubleKeyFrame KeyTime="0:0:6" Value="270"/>
        <EasingDoubleKeyFrame KeyTime="0:0:8" Value="360"/>
      </DoubleAnimationUsingKeyFrames>
   </Storyboard>
  </UserControl.Resources>

Simple enough, it makes an ark spin forever. Now in the code behind I have a dependency property which is bound to a Boolean value indicating when the animation should be spinning or stopped. This triggers a method which should, in theory, pause or resume the animation. It looks something like this:

private void SetStoryBoardActivity(bool play)
    {
      var storyboard = (Storyboard)this.Resources["TheStoryboard"];
      if (play)
      {
        storyboard.Resume();
      }
      else
      {
        storyboard.Pause();       
      }
    }

The execution path enters the method as intended, however the animation doesn't stop when calling Pause(); I've tried

    storyboard.Stop();
    storyboard.Stop(this);
    storyboard.Stop(this.Arc1);
    storyboard.Freeze();
    storyboard.Pause();
    storyboard.Pause(this);
    storyboard.Pause(this.Arc1);

but nothing seems to work. Does anyone know what I'm doing wrong?

2 Answers
Related