49

我有这样的事情:

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

现在,您将如何停止该动画(DoubleAnimation)?我想这样做的原因是因为我想开始新的动画(这似乎有效,但很难说)并最终停止最后一个动画......

4

8 回答 8

87

要停止它,请BeginAnimation在第二个参数设置为 的情况下再次调用null

于 2008-08-21T15:47:49.053 回答
32

使用情节提要控制动画时,请确保将第二个参数设置为 true 以将动画设置为可控:

public void Begin(
    FrameworkContentElement containingObject,
    **bool isControllable**
)
于 2008-08-31T10:08:30.913 回答
18

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

根据您使用该值的方式,这可能不是您想要的行为。第二种方法是将动画 BeginTime 设置为 null,然后用它调用 BeginAnimation。这将删除该特定动画并将值保留在其当前位置。

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);
于 2012-02-24T18:35:06.627 回答
10
<Trigger.EnterActions>
       <BeginStoryboard x:Name="myStory">
       .........
       </BeginStoryboard>
</Trigger.EnterActions>
<Trigger.ExitActions>
       <StopStoryboard BeginStoryboardName="myStory"/>
</Trigger.ExitActions>
于 2015-11-02T07:51:04.437 回答
8

如果要让基值再次变为有效值,则必须停止动画对属性的影响。使用情节提要动画可以通过三种方式做到这一点:

  • 将动画的 FillBehavior 属性设置为 Stop
  • 删除整个情节提要
  • 从单个属性中删除动画

来自 MSDN

如何:在使用情节提要制作动画后设置属性

于 2008-12-17T16:19:55.963 回答
8

在我的情况下,我必须使用两个命令,我的 xaml 有一个触发触发器的按钮,它的触发器触发情节提要动画。

我已经用下面的代码放置了一个按钮来停止动画:

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

我不喜欢它,但它在这里确实有效。试试看!

于 2009-07-01T22:56:44.907 回答
4

将动画放在 StoryBoard 中。在情节提要上调用 Begin() 和 Stop() 以开始停止动画。

于 2008-08-21T17:12:31.457 回答
0

您可以使用以下代码:

[StoryBoardName].Remove([StoryBoardOwnerControl]);
于 2013-08-07T11:04:20.820 回答