我有这样的事情:
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属性设置为Stop
删除整个故事板
从单个属性中删除动画
来自MSDN
如何:使用故事板为其设置动画后设置属性
在我的情况下,我不得不使用两个命令,我的xaml有一个触发触发器的按钮,它的触发器触发故事板动画.
我用一个按钮停止动画,后面跟着这个代码:
MyBeginStoryboard.Storyboard.Begin(this, true); MyBeginStoryboard.Storyboard.Stop(this);
我不喜欢它,但它确实在这里工作.试试看!
.........