Frage

Ich schreibe meine erste WPF-Anwendung und ich versuche, eine Fade-Animation zu implementieren, wenn die Form geschlossen wird. Ich kam in dieser Frage ein WPF-Fenster auf eine enge die zeigt Ausblendung wie eine Fade-out-Animation zu machen, aber ich kann nicht scheinen, daran zu arbeiten. Ich habe dies in meiner 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>

Und ich habe dann diese Event-Handler:

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

Aber wenn die sb.Begin() Methode aufgerufen ich diese Ausnahme erhalten:

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

Wie bereits erwähnt ist dies mein erster Versuch WPF so bin ich eher comfused an, was ich tun müssen, um den Fade-out hinzuzufügen, wenn die Form geschlossen wird.

War es hilfreich?

Lösung

Sie müssen ein Ziel UI-Element zu Ihrer Storyboard-Animation hinzufügen sonst es hat nichts, um die Animation gelten.

<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>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top