He creado una subclase simple de StackPanel
que puedo mover en la pantalla usando un TranslateTransform
animado. Se ve así:¿Por qué estas animaciones no funcionan cuando estoy usando un guión gráfico?
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.");
}
}
Y aquí es mi problema: Si el animo propiedades X e Y directamente, ya que el código anterior hace, funciona. Pero si uso el código comentado arriba, que es realmente la creación más simple de un código Storyboard
imaginable, no pasa nada. La animación se ejecuta, al menos, el evento Completado se levanta, pero nada cambia en la pantalla.
Claramente estoy haciendo algo mal, pero no puedo ver qué es. Cada ejemplo de creación de guiones gráficos en el código que he visto se ve así. Obviamente, hay algo sobre animaciones y guiones gráficos que aún no conozco: ¿qué es?
FYI - He publicado esto como un error en Microsoft Connect. https://connect.microsoft.com/VisualStudio/feedback/details/723701/storyboard-settarget-only-works-on-uielements-but-throws-no-exception –