我有一个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秒 - 这个时间从动画中减去,只显示剩余的动画。
为什么以及如何防止这种情况?
答案 0 :(得分:1)
基本上,动画是根据当前帧的时间而不是实际时间开始的。
通过延迟动画的开始,使用模态MessageBox,从第一帧的开始时间起已经过了时间,并且它执行常规的追踪/插值。
不要在与模态消息框相同的线程中调用动画Begin()
。使用弹出窗口中的按钮来触发动画而不是使用任何模态对话框。