Проблема новичка в раскадровке WPF

Я пишу свое первое приложение WPF и пытаюсь реализовать анимацию затухания при закрытии формы. Я наткнулся на этот вопрос Затухание окна wpf при закрытии, который показывает как сделать анимацию затухания, но я не могу заставить ее работать. У меня есть это в моем 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>

И тогда у меня есть этот обработчик событий:

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

Но когда вызывается метод sb.Begin(), я получаю это исключение:

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

Как уже говорилось, это моя первая попытка WPF, поэтому я довольно смущен тем, что мне нужно сделать, чтобы добавить исчезновение при закрытии формы.


person Aaron Powell    schedule 26.05.2009    source источник


Ответы (1)


Вам нужно добавить целевой элемент пользовательского интерфейса в анимацию StoryBoard, иначе анимацию не к чему будет применить.

<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>
person sipsorcery    schedule 26.05.2009