2016-05-22 1 views
1

私は周期的なアニメーション(C#コードで書かれています)とDataGridを持つMetroTileを持っています。グリッドに検証エラーがあると、viewmodelのタイルコマンドのCanExecute()はfalseを返し、タイルは無効になります。MVVMでアニメーションが終了するのを待つ最善の方法は何ですか?

DoubleAnimation db = new DoubleAnimation(startStopTile.ActualHeight, 0, TimeSpan.FromSeconds(0.5)); 
db.FillBehavior = FillBehavior.Stop; 
startStopTile.BeginAnimation(HeightProperty, db); 

問題はタイルがアニメーション中に無効にし、それの途中でフリーズすることができるということである。

この

は、タイマーの目盛りの方法で実行するアニメーションコードです。タイルが無効になる前にアニメーションが完了するのを待つ最善の方法は何ですか?

私はそれがtrueを有効にするために、私は)(すなわち、bool AnimationCompleted)ときのアニメーションが終了するのviewmodelプロパティを更新し、CanExecute(中whileループで待つことができると思ったが、私はそれが最善の方法かどうかわかりません。

答えて

0

アニメーション完了イベントを使用してアニメーションが完了した後に、ViewModelに通知するだけの理由はありますか? whileループ経由で待つ必要はありません(これはUIがブロックされるので悪いです)。

db.Completed += OnAnimationComplete; 

private void OnAnimationComplete(object sender, EventArgs e) 
{ 
    db.Completed -= OnAnimationComplete; 

    // Notify ViewModel that it finished 
    // 
    // example: viewModel.NotifyAnimationComplete(); 
} 
関連する問題