質問
私は次のようなものを持っています:
barProgress.BeginAnimation(RangeBase.ValueProperty, new DoubleAnimation( barProgress.Value, dNextProgressValue, new Duration(TimeSpan.FromSeconds(dDuration)));
さて、そのアニメーション ( DoubleAnimation
)?これを行う理由は、新しいアニメーションを開始し (これは機能するようですが、わかりません)、最終的には最後のアニメーションを停止したいからです...
解決
止めるには電話してください BeginAnimation
2 番目の引数を次のように設定して再度実行します null
.
他のヒント
ストーリーボードを使用してアニメーションを制御する場合は、アニメーションを制御可能に設定するために 2 番目のパラメーターを true に設定してください。
public void Begin(
FrameworkContentElement containingObject,
**bool isControllable**
)
BeginAnimation を停止するには 2 つの方法があります。1 つ目は、2 番目のパラメーターを null に設定して BeginAnimation を再度呼び出すことです。これにより、プロパティ上のすべてのアニメーションが削除され、 元に戻す 値を基本値に戻します。
その値の使用方法によっては、これが望ましい動作ではない可能性があります。2 番目の方法は、アニメーション 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);
基本値を再度効果的な値にする必要がある場合は、アニメーションがプロパティに影響を与えるのを止める必要があります。ストーリーボードのアニメーションでこれを行うには3つの方法があります。
- アニメーションのfillbehaviorプロパティを停止するように設定します
- ストーリーボード全体を削除する
- 個々のプロパティからアニメーションを削除します
MSDN より
私の場合、2 つのコマンドを使用する必要がありました。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]);