2009-05-26 8 views
1

私は最初のWPFアプリケーションを作成していますが、フォームが閉じたときにフェードアニメーションを実装しようとしています。私はこの質問Fading out a wpf window on closeに出くわしました。これはフェードアウトアニメーションを作る方法を示していますが、私はそれを働かせるようには見えません。WPFストーリーボード初心者の問題

<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> 

そして私は、このイベントハンドラがあります:私は私のXAMLでこれを持って述べたように

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

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()方法は、私はこの例外を取得すると呼ばれていますこれはWPFでの私の最初の試みなので、フォームが閉じているときにフェードアウトを追加するために必要なことにむしろ納得しています。

答えて

3

StoryBoardアニメーションにターゲットUI要素を追加する必要があります。それ以外の場合は、アニメーションを適用することはありません。

<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>