如何停止C#/ WPF中的animation?

我有这样的东西:

 barProgress.BeginAnimation(RangeBase.ValueProperty,new DoubleAnimation(
     barProgress.Value,dNextProgressValue,
    新的持续时间(TimeSpan.FromSeconds(dDuration)));

现在,你将如何停止该animation( DoubleAnimation )? 我想这样做的原因是因为我想开始新的animation(这似乎工作,但很难说),并最终停止最后一个animation…

要停止它,再次调用BeginAnimation并将第二个参数设置为null。

当使用故事板来控制animation时,请确保将第二个参数设置为true,以便将animation设置为可控:

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

有两种方法来停止一个BeginAnimation。 第一个是再次调用BeginAnimation,将第二个参数设置为null。 这将删除属性上的所有animation,并将其值恢复为其基值。

根据你如何使用这个值,这可能不是你想要的行为。 第二种方法是将animationBeginTime设置为null,然后用它调用BeginAnimation。 这将删除该特定的animation,并将值保留在当前位置。

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

如果您希望基础值再次成为有效值,则必须停止animation影响属性。 有三种方法可以与故事板animation一起做到这一点:

  • 将animation的FillBehavior属性设置为Stop
  • 删除整个故事板
  • 从各个属性中删除animation

来自MSDN

如何:使用情节提要设置animation后设置属性

在我的情况下,我不得不使用两个命令,我的XAML有一个button,触发一个触发器,它的触发器触发故事板animation。

我已经放了一个button来停止这个代码的animation:

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

我不喜欢它,但它真的在这里工作。 试一试!

将animation放入StoryBoard中。 调用故事板上的Begin()和Stop()开始停止animation。

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

你可以使用这个代码:

 [StoryBoardName].Remove([StoryBoardOwnerControl]);