wpf範例 - 如何停止C#/ WPF中的動畫?




wpf動畫 (6)

將動畫放入StoryBoard中。 調用故事板上的Begin()和Stop()開始停止動畫。

我有這樣的東西:

barProgress.BeginAnimation(RangeBase.ValueProperty, new DoubleAnimation(
    barProgress.Value, dNextProgressValue,
    new Duration(TimeSpan.FromSeconds(dDuration)));

現在,你將如何停止該動畫( DoubleAnimation )? 我想這樣做的原因是因為我想開始新的動畫(這似乎工作,但很難說),並最終停止最後一個動畫...


要停止它,再次調用BeginAnimation並將第二個參數設置為null。


在我的情況下,我不得不使用兩個命令,我的XAML有一個按鈕,觸發一個觸發器,它的觸發器觸發故事板動畫。

我已經放了一個按鈕來停止這個代碼的動畫:

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

我不喜歡它,但它真的在這里工作。 試一試!


有兩種方法來停止一個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);

當使用故事板來控制動畫時,請確保將第二個參數設置為true,以便將動畫設置為可控:

public void Begin(
    FrameworkContentElement containingObject,
    **bool isControllable**
)

<Trigger.EnterActions>
       <BeginStoryboard x:Name="myStory">
       .........
       </BeginStoryboard>
</Trigger.EnterActions>
<Trigger.ExitActions>
       <StopStoryboard BeginStoryboardName="myStory"/>
</Trigger.ExitActions>




wpf