Pergunta

Eu estou escrevendo minha primeira aplicação WPF e eu estou tentando implementar uma animação desvanece quando o fecha formulário. Me deparei com esta pergunta desvanecimento por uma janela WPF no próximo que mostra como fazer uma animação fade-out, mas eu não consigo fazê-lo funcionar. Eu tenho isso no meu 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 eu, então, esse manipulador 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();
        }
    }

Mas quando o método é chamado sb.Begin() eu recebo esta exceção:

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

Como dito esta é a minha primeira tentativa de WPF por isso estou bastante comfused o que eu preciso fazer para adicionar o fade-out quando o formulário está fechando.

Foi útil?

Solução

Você precisa adicionar um elemento de interface do usuário-alvo para a sua animação StoryBoard nada caso contrário, tem de aplicar a animação.

<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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top