我有一个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秒,则从动画中减去这一时间,只显示剩余的动画。
为什么以及如何防止这种情况发生?
发布于 2011-07-27 21:49:50
基本上,动画是基于当前帧的时间开始的,而不是实际的时间。
通过延迟动画的开始,使用模式MessageBox,时间从第一帧的开始时间已经过去,并且它执行其通常的追赶/插值。
不要在与模式消息框相同的线程中调用动画Begin()。使用弹出窗口中的按钮来触发动画,而不是使用任何模式对话框。
https://stackoverflow.com/questions/6845338
复制相似问题