[英]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.