我創建了一個簡單的子類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事件被提升 - 但屏幕上沒有任何變化。
顯然我做錯了什麼,但我看不到它是什麼。在我看到的代碼中創建故事板的每個示例都與此類似。顯然還有一些我還不知道的動畫和故事板:它是什麼?
僅供參考 - 我將其作爲Microsoft Connect上的一個錯誤發佈。 https://connect.microsoft.com/VisualStudio/feedback/details/723701/storyboard-settarget-only-works-on-uielements-but-throws-no-exception – 2012-02-06 19:16:13