Ich habe eine einfache Unterklasse von StackPanel
erstellt, die ich mit einem animierten TranslateTransform
auf dem Bildschirm bewegen kann. Es sieht wie folgt aus:Warum funktionieren diese Animationen nicht, wenn ich ein Storyboard verwende?
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.");
}
}
Und hier ist mein Problem: Wenn ich die X- und Y-Eigenschaften direkt zu animieren, wie der obige Code funktioniert, es funktioniert. Aber wenn ich den auskommentierten Code darüber verwende, der wirklich die einfachste Kreation eines Storyboard
im Code ist, passiert nichts. Die Animation wird ausgeführt - mindestens wird das Ereignis Completed ausgelöst -, aber auf dem Bildschirm ändert sich nichts.
Offensichtlich mache ich etwas falsch, aber ich kann nicht sehen, was es ist. Jedes Beispiel zum Erstellen von Storyboards in Code, die ich gesehen habe, sieht genau so aus. Es gibt offensichtlich etwas über Animationen und Storyboards, die ich noch nicht kenne: Was ist das?
FYI - Ich habe dies als einen Fehler auf Microsoft Connect geschrieben. https://connect.microsoft.com/VisualStudio/feedback/details/723701/storyboard-settarget-only-works-on-uielements-but-throws-no-exception –