我创建了一个简单的子类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