2009-05-26 7 views
1

J'écris ma première application WPF et j'essaye d'implémenter une animation de fondu lorsque le formulaire se ferme. Je suis tombé sur cette question Fading out a wpf window on close qui montre comment faire une animation de fondu mais je n'arrive pas à la faire fonctionner. J'ai dans mon XAML:WPF Storyboard problème débutant

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

Et je puis ce gestionnaire d'événements:

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(); 
     } 
    } 

Mais quand la méthode sb.Begin() est appelée j'obtenir cette exception:

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

Comme indiqué C'est ma première tentative de WPF, donc je suis plutôt confuse de ce que je dois faire pour ajouter le fondu lorsque le formulaire se ferme.

Répondre

3

Vous devez ajouter un élément d'interface utilisateur cible à votre animation StoryBoard sinon il n'a rien à appliquer à l'animation.

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