2013-10-14 106 views
0

我有一個Windows任務欄圖標的應用程序。當用戶點擊托盤圖標時,顯示我的WPF窗口。如果用戶關閉窗口,它就會被隱藏起來。在下一次點擊托盤圖標時,同一個窗口會再次顯示。滑出/在(顯示/隱藏)動畫完成窗口

目標是讓窗口的外觀呈現動畫效果。窗口應該從任務欄「上移」。當用戶關閉窗口時它應該「滑下」。我目前有一個我不太喜歡的解決方案,我想知道是否有更好的方法。我有這改變了佈局容器的高度(格在這種情況下)動畫:

<Storyboard x:Key="BottomUpSlideIn" Completed="BottomUpSlideIn_OnCompleted"> 
     <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(FrameworkElement.Height)" Storyboard.TargetName="grid"> 
      <EasingDoubleKeyFrame KeyTime="0" Value="0"/> 
      <EasingDoubleKeyFrame KeyTime="0:0:0.4" Value="470"/> 
     </DoubleAnimationUsingKeyFrames> 
</Storyboard> 

但它實際上並不隱藏窗口,它只是將其高度爲零。動畫完成後,是否可以將窗口的可見性設置爲隱藏?或者你知道一個不同的/更好的方法來完成這項工作嗎?

+0

你可以(/'Visibilily')simulaneously動畫'Opacity'。 – nuke

+0

我真的不是這方面的專家。我怎麼能這樣做?你能給我一些建議嗎? – Johannes

回答

1

我用這對我的第一個應用程序之一......你可能需要將Trigger調整您的要求:

<Window.Triggers> 
    <EventTrigger RoutedEvent="Loaded"> 
     <BeginStoryboard> 
      <Storyboard Name="SlideStoryboard"> 
       <DoubleAnimation Name="SlideDoubleAnimation" 
        Storyboard.TargetName="SlideWindow" Storyboard.TargetProperty="Top" 
        Duration="0:0:0.75" Completed="SlideDoubleAnimation_Completed" 
        AccelerationRatio="0.5" /> 
      </Storyboard> 
     </BeginStoryboard> 
    </EventTrigger> 
</Window.Triggers> 

SlideWindowWindow.Name屬性的值。

然後用於關閉動畫,我剛調整過此DoubleAnimation對象:

private void BeginCloseAnimation() 
{ 
    SlideDoubleAnimation.From = System.Windows.SystemParameters.WorkArea.Height - 
     this.Height - 2; 
    SlideDoubleAnimation.To = System.Windows.SystemParameters.WorkArea.Height;   
    SlideStoryboard.Begin(); 
    close = true; 
} 

private void SlideDoubleAnimation_Completed(object sender, EventArgs e) 
{ 
    if (close) Close(); 
} 
+0

動畫完成後可以更改可見性嗎?因爲我想隱藏窗口(而不是關閉窗口) – Johannes

+0

當然,我不明白爲什麼不... ...放棄它。 – Sheridan