我有一个带有周期性动画的MetroTile(用C#代码编写)和一个DataGrid。当网格出现验证错误时,视图模型中的tile命令的CanExecute()将返回false
,并且磁贴已禁用。
这是在计时器的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
,但我不是确定它是否是最好的方法。
答案 0 :(得分:0)
为什么不在动画完成后使用动画完成事件通知ViewModel
?循环时无需等待(这很糟糕,因为它会阻止UI)。
db.Completed += OnAnimationComplete;
private void OnAnimationComplete(object sender, EventArgs e)
{
db.Completed -= OnAnimationComplete;
// Notify ViewModel that it finished
//
// example: viewModel.NotifyAnimationComplete();
}