[英]How to stop an animation in C# / WPF?
我有這樣的事情:
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);
<Trigger.EnterActions>
<BeginStoryboard x:Name="myStory">
.........
</BeginStoryboard>
</Trigger.EnterActions>
<Trigger.ExitActions>
<StopStoryboard BeginStoryboardName="myStory"/>
</Trigger.ExitActions>
在我的例子中,我不得不使用兩個命令,我的 xaml 有一個觸發觸發器的按鈕,它的觸發器觸發故事板動畫。
我在后面放了一個按鈕來停止動畫:
MyBeginStoryboard.Storyboard.Begin(this, true);
MyBeginStoryboard.Storyboard.Stop(this);
我不喜歡它,但它在這里確實有效。 試一試!
如果想讓基值再次成為有效值,必須停止動畫對屬性的影響。 使用故事板動畫可以通過三種方式來做到這一點:
- 將動畫的 FillBehavior 屬性設置為 Stop
- 刪除整個故事板
- 從單個屬性中刪除動畫
來自 MSDN
將動畫放置在 StoryBoard 中。 在情節提要上調用 Begin() 和 Stop() 以開始停止動畫。
您可以使用此代碼:
[StoryBoardName].Remove([StoryBoardOwnerControl]);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.