2011-07-27 41 views
2

我有一個Silverlight動畫:單擊按鈕時執行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

+1,用於突出顯示MessageBox可以有多糟糕:) –

回答

1

基本上動畫是基於當前幀的時間而不是實際時間開始的。

通過延遲動畫的開始,使用模式化的MessageBox,自第一幀開始時間以來,時間已經過去,並且它執行了其通常的追趕/插值。

不要將動畫Begin()與模態消息框調用在同一線程中。使用彈出式按鈕觸發動畫,而不是使用任何模態對話框。