如何停止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]);