2009-05-26 115 views
1

我正在寫我的第一個WPF應用程序,並試圖在窗體關閉時實現淡入淡出動畫。我遇到了這個問題Fading out a wpf window on close,它顯示瞭如何使淡出動畫,但我似乎無法得到它的工作。我有這個在我的XAML:WPF Storyboard初學者問題

<Window.Resources> 
    <Storyboard Name="FadeOutStoryboard" x:Key="FadeOutStoryboard" Completed="FadeOutStoryboard_Completed"> 
     <DoubleAnimation Storyboard.TargetProperty="Window.Opacity" From="1" To="0" Duration="0:0:2" FillBehavior="HoldEnd" /> 
    </Storyboard> 
</Window.Resources> 

然後,我有這樣的事件處理程序:

private bool doneFade; 
    private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e) 
    { 
     if (!doneFade) 
     { 
      e.Cancel = true; 
      Storyboard sb = (Storyboard)this.FindResource("FadeOutStoryboard"); 
      sb.Begin(); 
     } 
    } 

但當sb.Begin()方法被調用我得到這個異常:

System.InvalidOperationException: No target was specified for 'System.Windows.Media.Animation.DoubleAnimation'. 

如前所述這是我在WPF上的第一次嘗試,所以我相當喜歡在窗體關閉時添加淡出功能時所需要做的事情。

回答

3

您需要將目標用戶界面元素添加到您的StoryBoard動畫中,否則它無法將動畫應用於其中。

<Storyboard Name="FadeOutStoryboard" x:Key="FadeOutStoryboard" Completed="FadeOutStoryboard_Completed">   
    <DoubleAnimation Storyboard.TargetName="myWindow" Storyboard.TargetProperty="Window.Opacity" From="1" To="0" Duration="0:0:2" FillBehavior="HoldEnd" />  
</Storyboard>