C# / WPF でアニメーションを停止するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/20298

  •  09-06-2019
  •  | 
  •  

質問

私は次のようなものを持っています:

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]);
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top