2012-01-19 14 views
0

私は最初の位置から別の位置にオブジェクトを翻訳するためにストーリーボードを開発しましたが、ストーリーボードをもう一度起動するか、別のストーリーボードを呼び出すと、オブジェクトは常に最初の位置から変換されます。新しい翻訳は最初の翻訳後に確立されました。それを変更するには?オブジェクトを現在の位置から別の位置に変換する方法はありますか?

マイコード:

TranslateTransform animatedTranslateTransform = new TranslateTransform(); 
this.RegisterName("slide", animatedTranslateTransform); 
TransformGroup transformGroup = new TransformGroup(); 
transformGroup.Children.Add(animatedTranslateTransform); 
_button.RenderTransform = transformGroup; 

//translate Y 
DoubleAnimation slideDown = new DoubleAnimation(20, TimeSpan.FromSeconds(1.0)); 
Storyboard.SetTargetName(slideDown, "slide"); 
Storyboard.SetTargetProperty(slideDown, new PropertyPath(TranslateTransform.YProperty)); 
storyBoardSlideDown.Children.Add(slideDown); 
+2

私たちにいくつかのコードを教えてください。あなたは何をした?何を試しましたか?期待どおりに動かないのは何ですか?代わりに何をしているのですか? – cdeszaq

答えて

2

DoubleAnimation.Toの代わりにDoubleAnimation.Byを使用してください。 MSDNから:

アニメーションがその 値の合計とすることで財産

書き込みで指定された値にアニメーション または前のアニメーションの出力値であるプロパティのベース値から進行します

DoubleAnimation slideDown = 
    new DoubleAnimation { By = 20, Duration = TimeSpan.FromSeconds(1.0) }; 
+0

完璧!それはまさに私が探していたものです。どうもありがとう。 – faha

0

あなたはHoldEndに(例えばDoubleAnimationなど)、アニメーションのFillBehaviorを設定する必要があります。そして、

da.FillBehavior = FillBehavior.HoldEnd; 

は、トップまたは左にda.Fromプロパティを設定しましたCanvasオブジェクトまたはElementオブジェクトの

オブジェクトが縦方向と横方向の両方で移動できる場合は、ストーリーボードに2つのDoubleAnimationオブジェクトが接続されている必要があります。

+0

FillBehaviorプロパティの既定値は既にHoldEndです。私のオブジェクトは動いて(私のサンプルコードでは20pxの下に)、アニメーションの後に位置していますが、もう一度アニメーションをトリガーすると、別の20pxボトム(つまり最初の位置から40px)に移動したいと思います最初のものからではなく新しい位置から移動する)。 – faha

関連する問題