2016-09-10 25 views
-3

私はアニメーションの完全なコールバックを取得するには、==から発するコールバックを見つけたいと思います。今、私は値下げするために少量を追加することでこれをハックします。より良い方法がありますか?WPFアニメーション:完全なコールバックが呼び出されていない場合==から

//todo is there a way to get animations to call their Complete() even when to == from? 
    if (to.Equals(from)) { 
     from += .01; 
    } 

    DoubleAnimation animation = new DoubleAnimation { 
     Name = axis == Axis.X ? TranslateTransform.XProperty.Name : TranslateTransform.YProperty.Name, 
     From = from, 
     To = to, 
     Duration = TimeSpan.FromSeconds(translate.Time), 
     FillBehavior = FillBehavior.Stop, 
     EasingFunction = translate.Curve.ToEase(), 
     IsAdditive = false, 

    }; 

    AnimationClock = animation.CreateClock(); 

    AnimationClock.Completed += (sender, args) => { 

    }; 

答えて

0

アニメーションの作成前に値を確認できます。
継続時間が重要な場合は、タイマーを開始して、それが起きたときにコードを起動することができます。このような

何かがトリックを行う必要があります。

if (to.Equals(from)) { 
     if (_timer == null) 
     { 
      _timer = new Timer(x => 
      { 
       //completeCode 
      }, null, translate.Time * 1000, Timeout.Infinite); 
     } 
     else 
     { 
      _timer.Change(translate.Time * 1000, Timeout.Infinite); 
     } 
    return;  
} 
+0

それは最高のそれはクラス変数に格納するためにタイマーを毎回作成する高価なリソースです。 –

+0

あなたは正しいです、コードが更新されました。 –

関連する問題