Почему эти анимации не работают, когда я использую раскадровку?
Я создал простой подклассStackPanel
что я могу перемещаться по экрану, используя анимированныеTranslateTransform
, Это выглядит так:
public class MovingStackPanel : StackPanel
{
public void BeginMove(Point translatePosition)
{
RenderTransform = new TranslateTransform();
Duration d = new Duration(new TimeSpan(0, 0, 0, 0, 400));
DoubleAnimation x = new DoubleAnimation(translatePosition.X, d);
DoubleAnimation y = new DoubleAnimation(translatePosition.Y, d);
/*
Storyboard.SetTarget(x, RenderTransform);
Storyboard.SetTargetProperty(x, new PropertyPath("X"));
Storyboard.SetTarget(y, RenderTransform);
Storyboard.SetTargetProperty(y, new PropertyPath("Y"));
Storyboard sb = new Storyboard();
sb.Children.Add(x);
sb.Children.Add(y);
sb.Completed += sb_Completed;
sb.Begin();
*/
RenderTransform.BeginAnimation(TranslateTransform.XProperty, x);
RenderTransform.BeginAnimation(TranslateTransform.YProperty, y);
}
void sb_Completed(object sender, EventArgs e)
{
Console.WriteLine("Completed.");
}
}
И вот моя проблема: если я анимирую свойства X и Y напрямую, как показано в коде выше, это работает. Но если я использую закомментированный код над ним, это действительно самое простое созданиеStoryboard
в мыслимом коде ничего не происходит. Анимация запускается - по крайней мере, событие Completed вызывается - но на экране ничего не меняется.
Очевидно, что я делаю что-то не так, но я не вижу, что это такое. Каждый пример создания раскадровок в коде, который я видел, выглядит примерно так. Очевидно, что в анимации и раскадровках есть что-то, чего я еще не знаю: что это?