Проблема новичка в раскадровке WPF
-
05-09-2019 - |
Вопрос
Я пишу свое первое приложение 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, поэтому я довольно смущен тем, что мне нужно сделать, чтобы добавить исчезновение при закрытии формы.
Решение
Вам нужно добавить целевой элемент пользовательского интерфейса к вашей анимации раскадровки, иначе ему не к чему будет применять анимацию.
<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>
Не связан с StackOverflow