题
我有这样的事情:
barProgress.BeginAnimation(RangeBase.ValueProperty, new DoubleAnimation( barProgress.Value, dNextProgressValue, new Duration(TimeSpan.FromSeconds(dDuration)));
现在,你将如何停止该动画( DoubleAnimation
)?我想这样做的原因是因为我想开始新的动画(这似乎有效,但很难说)并最终停止最后一个动画......
解决方案
要停止它,请致电 BeginAnimation
再次将第二个参数设置为 null
.
其他提示
使用故事板控制动画时,请确保将第二个参数设置为 true 以便将动画设置为可控:
public void Begin(
FrameworkContentElement containingObject,
**bool isControllable**
)
有两种方法可以停止 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);
如果您希望基本价值再次成为有效的值,则必须阻止动画影响属性。故事板动画有三种方法:
- 将动画的FillBehavior属性设置为停止
- 删除整个故事板
- 从单个属性中删除动画
来自MSDN
就我而言,我必须使用两个命令,我的 xaml 有一个触发触发器的按钮,它的触发器触发故事板动画。
我已经放置了一个按钮来停止动画,后面的代码如下:
MyBeginStoryboard.Storyboard.Begin(this, true);
MyBeginStoryboard.Storyboard.Stop(this);
我不喜欢它,但它在这里确实有效。试一试!
<Trigger.EnterActions>
<BeginStoryboard x:Name="myStory">
.........
</BeginStoryboard>
</Trigger.EnterActions>
<Trigger.ExitActions>
<StopStoryboard BeginStoryboardName="myStory"/>
</Trigger.ExitActions>
将动画放置在故事板中。调用 Storyboard 上的 Begin() 和 Stop() 来开始停止动画。
您可以使用此代码:
[StoryBoardName].Remove([StoryBoardOwnerControl]);
不隶属于 StackOverflow