Событие WPF StoryBoard.
У меня есть анимация перед закрытием главного окна, как показано на следующем рисунке. Проблема в том, что StoryBoard.Completed
не срабатывает. Любые подсказки, что вызывает это?
код
DoubleAnimation dblAnimX = new DoubleAnimation(1.0, 0.0, new Duration(TimeSpan.FromSeconds(0.5)));
dblAnimX.SetValue(Storyboard.TargetProperty, this);
DoubleAnimation dblAnimY = new DoubleAnimation(1.0, 0.0, new Duration(TimeSpan.FromSeconds(0.5)));
dblAnimY.SetValue(Storyboard.TargetProperty, this);
Storyboard story = new Storyboard();
Storyboard.SetTarget(dblAnimX, this);
Storyboard.SetTarget(dblAnimY, this);
Storyboard.SetTargetProperty(dblAnimX, new PropertyPath("RenderTransform.ScaleX"));
Storyboard.SetTargetProperty(dblAnimY, new PropertyPath("RenderTransform.ScaleY"));
story.Children.Add(dblAnimX);
story.Children.Add(dblAnimY);
story.Begin(this);
story.Completed += (o, s) => { this.Close(); };
Ответы
Ответ 1
Добавьте обработчик Completed перед вызовом Begin:
story.Completed += (o, s) => Close();
story.Begin(this);
Причиной такого поведения является то, что обработчик Completed привязан к внутреннему объекту Clock, который создается во время Begin. См. Раздел "Примечания" в " Завершено":
Хотя этот обработчик событий связан с временной шкалой, он фактически регистрируется с помощью часов, созданных для этой временной шкалы. Для получения дополнительной информации см. Обзор событий синхронизации.