我有一個簡單的動畫故事板看起來像這樣:向後尋求動畫故事板到一個特定的點,然後打
<Window.Resources>
<Storyboard x:Key="fader">
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Opacity)">
<SplineDoubleKeyFrame KeyTime="0:0:0" Value="0"/>
<SplineDoubleKeyFrame KeyTime="0:0:0.5" Value="1"/>
</DoubleAnimationUsingKeyFrames>
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Opacity)">
<SplineDoubleKeyFrame KeyTime="0:0:4" Value="1"/>
<SplineDoubleKeyFrame KeyTime="0:0:6" Value="0"/>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
</Window.Resources>
正如你所看到的,它消失的目標,等待3.5秒,然後淡出它。我在發生事件時出現的通知程序窗口上使用它。
它通過調用代碼以下作品完美,當事件發生:
board = (Storyboard)FindResource("fader");
board.Begin(this);
不過,我想處理情況,同時通知窗口已經顯示出第二事件發生時的情況。在這種情況下,我正在尋找的行爲是修改窗口的內容以反映第二個事件(簡單),並且通過它的生命週期將故事板「倒回」到0.5s,即。就在它出現之後。
換句話說,第二個事件應該會導致在第二個事件發生之後3.5秒發生淡出,即使窗口已經在0到6秒之間的任何地方出現過了。
我已經試圖通過檢測窗口的透明度要做到這一點,如果它是> 0,則調用下面:
board.Seek(this,TimeSpan.FromSeconds(0.5),TimeSeekOrigin.BeginTime);
然而,這似乎並沒有做任何事情,即使我反覆發射事件,窗口內容改變,但通知者忠實地淡入,等待3.5秒,然後再次淡出。
爲什麼這項工作,這是做我想要實現的最好方式?
同意 - 如果我從不想改變它,那麼擁有單個動畫的原始想法可能沒問題。然而,新的要求意味着將其全部拋開,並以不同的方式進行。將有一個bash。 – growse
它的工作原理。好極了!! – growse
非常好!很高興能使用:-) – alastairs