2012-01-09 11 views
1

KeyFramesを使用してGridLengthの値をアニメーション化できるクラスはありますか?私は、以下のサイトを見てきましたが、それらのどれもKeyFramesではなかった:キーフレームを使用したGridLengthアニメーション?

何かアドバイスを?

+0

[あなたが指しているビデオを含む]いくつかの回答があります:[WPFでは、誰かがグリッドをアニメーション化していますか?](http://stackoverflow.com/questions/197855/in-wpf-has-誰でもアニメーショングリッド) –

答えて

1

添付されたビヘイビアを作成し、代わりにアニメーション化します。

確かに、GridLengthは明らかに数値型ではないため、アニメーション化する方法が明確ではありません。 double型の数値プロパティとして、グリッド幅を-inroduce再度ます

public class AnimatableProperties 
    { 
     public static readonly DependencyProperty WidthProperty = 
      DependencyProperty.RegisterAttached("Width", 
      typeof(double), 
      typeof(DependencyObject), 
      new PropertyMetadata(-1, (o, e) => 
      { 
       AnimatableProperties.OnWidthChanged((Grid)o, (double)e.NewValue); 
      })); 

     public static void SetWidth(DependencyObject o, 
      double e) 
     { 
      o.SetValue(AnimatableProperties.WidthProperty, e); 
     } 

     public static double GetWidth(DependencyObject o) 
     { 
      return (double)o.GetValue(AnimatableProperties.WidthProperty); 
     } 

     private static void OnWidthChanged(DependencyObject target, 
      double e) 
     { 
      target.SetValue(Grid.WidthProperty, new GridLength(e)); 
     } 
    } 

:私のような添付の挙動を作成することができますcompnesateします。その場所を持っていると、自由にアニメートすることができます。

P.S.グリッドの幅をすでに2倍にしているので、明らかにそれはあまり意味がありません。他のGridLengthベースのプロパティは、上記のサンプルに従ってダブルラッパーでwrpappedし、そのラッパーを介してアニメーション化することができます。

+0

もう少し説明できますか? – Hamed

関連する問題