繁体   English   中英

在MVVM中等待动画完成的最佳方法是什么?

[英]What is the best way to wait for an animation to finish in MVVM?

我有一个带有周期性动画的MetroTile(用C#代码编写)和一个DataGrid。 当网格有验证错误时,viewmodel中的tile命令的CanExecute()返回false并禁用该tile。

这是在计时器的tick方法中执行的动画代码:

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

问题是可以在动画期间禁用磁贴并在其中间冻结。 在禁用磁贴之前等待动画完成的最佳方法是什么?

我认为我可以在动画结束时更新一个viewmodel属性(即bool AnimationCompleted )并在CanExecute()中等待一个while循环使其转为true ,但我不确定它是否是最好的方法。

为什么不在动画完成后使用动画完成事件通知ViewModel 循环时无需等待(这很糟糕,因为它会阻止UI)。

db.Completed += OnAnimationComplete;

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

    // Notify ViewModel that it finished
    //
    // example: viewModel.NotifyAnimationComplete();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM