2016-12-17 5 views
1

私は手動でカルーセルパネルを作成しています。私は車輪のように見えるグリッドを回転させる単純なストーリーボードを持っています。UWPストーリーボードアニメーションの回転値(角度)を取得中またはその後に取得

<Storyboard x:Name="MyStoryboard"> 
     <DoubleAnimation Duration="0, 0, 30" To="3000" FillBehavior="HoldEnd" x:Name="myAnimation" 
     Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.Rotation)" 
     Storyboard.TargetName="Wheel" d:IsOptimized="True"/> 
    </Storyboard> 

ホイールは10度のセグメントに分割されているので、アニメーションを手動で停止しているときにのみ、10度の倍数に載置しなければなりません。 MSDN: How to Set a Property After Animating it with a Storyboard 最初の2つの解決策はUWPには適用されないようです(Storyboard.Removeメソッドは存在しません)。私は3番目の方法はパネルを回転させることには当てはまりませんストーリーボードを、アーティクルの例がボタンで行う方法と同様に、グリッドの依存プロパティとして設定します。

ストーリーボードが停止するのと同じように何らかの方法でローテーション値を取得できたら、10の次の倍数に丸めてDoubleAnimation.To値を設定することができます。誰もがこの価値を掴む方法を知っていますか?

答えて

1

誰でもこの値を取得する方法を知っていますか?

あなたは、このようなあなたのホイール要素のCompositeTransformからRotationプロパティの現在の値を取得することができます

private void PauseAnimation_Click(object sender, RoutedEventArgs e) 
{ 
    MyStoryboard.Pause(); 
    CompositeTransform d = Wheel.RenderTransform as CompositeTransform; 
    double rotation = d.Rotation; 
} 
+0

これは動作します。ありがとう!これは、アニメーションのオーバーライドプロパティRenderTransformをキャストしています。これは、できるだけのCompositeTransformプロパティに値を渡すことができません。 –

+0

あなたのアニメーションは、Wheel要素のRenderTransformプロパティの値として設定したCompositeTransformのRotationプロパティ、つまりこのプロパティの値を設定します。したがって、このプロパティから現在の値を取得できます。 – mm8

関連する問題