Domanda

sto scrivendo la mia prima applicazione WPF e sto cercando di implementare un'animazione dissolvenza quando la forma si chiude. Mi sono imbattuto in questa domanda dissolvenza da una finestra WPF su una stretta cui spettacoli come fare un'animazione fade-out, ma non riesco a farlo funzionare. Ho questo nel mio XAML:

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

E io allora ho questo gestore di eventi:

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

Ma quando il metodo viene chiamato sb.Begin() ottengo questa eccezione:

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

Come già detto questo è il mio primo tentativo di WPF, quindi sono piuttosto comfused a quello che devo fare per aggiungere il fade-out quando la forma si sta chiudendo.

È stato utile?

Soluzione

È necessario aggiungere un elemento dell'interfaccia utente di destinazione per l'animazione StoryBoard niente altrimenti è avuto modo di applicare l'animazione a.

<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>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top