Pregunta

Estoy escribiendo mi primera aplicación de WPF y estoy tratando de implementar una animación de fundido cuando se cierra el formulario. Me encontré con esta pregunta desvanecimiento por una ventana de WPF en una estrecha qué programas cómo hacer una animación de fundido de salida, pero me parece que no puede conseguir que funcione. Tengo esto en mi 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>

Y luego tengo este controlador de eventos:

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

Sin embargo, cuando el método se llama sb.Begin() consigo esta excepción:

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

Como se ha dicho que este es mi primer intento de WPF, así que estoy bastante comfused en lo que tengo que hacer para añadir el fundido de salida cuando el formulario se está cerrando.

¿Fue útil?

Solución

Es necesario añadir un elemento de interfaz de usuario de destino a su animación StoryBoard nada de lo contrario se tiene que aplicar la animación 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>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top