Silverlight动画开始得太早了

时间:2011-07-27 13:41:58

标签: silverlight animation

我有一个Silverlight动画:

<Storyboard x:Key="CloseAnimation" x:Name="CloseAnimation" Storyboard.TargetName="nv" Storyboard.TargetProperty="Height">
  <DoubleAnimation x:Name="CloseAnimation1" Duration="0:0:5" From="30" To="0">
  </DoubleAnimation>
</Storyboard>

并按下单击按钮时执行的代码:

MessageBox.Show("Test");
CloseAnimation.Begin();

我希望动画在行CloseAnimation.Begin()时启动;执行然后持续指定的持续时间。但似乎从按钮点击开始测量显示动画的时间。如果MessageBox是可见的让我们说3秒 - 这个时间从动画中减去,只显示剩余的动画。

为什么以及如何防止这种情况?

1 个答案:

答案 0 :(得分:1)

基本上,动画是根据当前帧的时间而不是实际时间开始的。

通过延迟动画的开始,使用模态MessageBox,从第一帧的开始时间起已经过了时间,并且它执行常规的追踪/插值。

不要在与模态消息框相同的线程中调用动画Begin()使用弹出窗口中的按钮来触发动画而不是使用任何模态对话框。

相关问题