Мне не удалось создать раскадровку в коде и запустить ее несколько раз прикованными друг к другу. Так или иначе, похоже, что раскадровка держится в контексте и не будет сброшена.Попытка запуска WPF StoryBoard несколько раз с различными выполненными действиями
Я оживляю несколько элементов, и X раз я рекурсивно запускаю анимационный метод, но с различными действиями обратного вызова в событии Completed. Первая анимация работает отлично, но в остальном она вообще не оживляет (завершенные огни события).
Если я создаю StoryBoard в методе и запустил его, не должен ли он быть удален после его завершения? Я пытаюсь сделать storyboard.Remove()
.
private void SlideLeft(int numberOfStepsToSlide)
{
if (numberOfStepsToSlide < 1) return;
Slide(() => SlideLeft(numberOfStepsToSlide - 1));
}
protected void Slide(Action callBackAfterAnimation = null)
{
var sb = new Storyboard();
sb.FillBehavior = FillBehavior.Stop; //i thought maybe this would fix it, but no
//..
//.. a number of double animations created and added to storyboard
//..
sb.Completed += (sender, e) =>
{
sb.Stop();
sb.Remove();
//..
//..sending message to ViewModel and manipulating values
//..
if (callBackAfterAnimation != null)
callBackAfterAnimation();
};
sb.Begin();
}
Спасибо за ваше время!
Чтобы немного перефразировать то, что вы пытаетесь сделать: вы хотите запустить одиночную раскадровку N раз, где N определяется во время анимации, и каждый раз, когда выполнялся другой обработчик Completed? – JerKimball
@JerKimball Извините за то, что неясно! Не совсем: я хочу запустить одну доску истории N раз, где N определяется _before_ анимацией. Изменить: я вызываю SlideLeft (3), который должен запускать раскадровку три раза. – cederlof