Подтвердить что ты не робот

Событие 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(); };
4b9b3361

Ответ 1

Добавьте обработчик Completed перед вызовом Begin:

story.Completed += (o, s) => Close();
story.Begin(this);

Причиной такого поведения является то, что обработчик Completed привязан к внутреннему объекту Clock, который создается во время Begin. См. Раздел "Примечания" в " Завершено":

Хотя этот обработчик событий связан с временной шкалой, он фактически регистрируется с помощью часов, созданных для этой временной шкалы. Для получения дополнительной информации см. Обзор событий синхронизации.