WindowsPhone7:如何使用代码为UIElement的位置设置动画?

时间:2011-12-10 22:38:27

标签: c# windows-phone-7 animation uielement

好像应该这么简单。我已经阅读了几十个链接,我无法获得任何动画这个位置的动画。我相信到目前为止我能写的最接近的代码是:

 Storyboard storyboard = new Storyboard();
 TranslateTransform trans = new TranslateTransform() { X = 1.0, Y = 1.0 };
        myCheckbox.RenderTransformOrigin = new Point(0.5, 0.5);
        myCheckbox.RenderTransform = trans;

        DoubleAnimation moveAnim = new DoubleAnimation();
        moveAnim.Duration = TimeSpan.FromMilliseconds(1200);
        moveAnim.From = -1;
        moveAnim.To = 1;
        Storyboard.SetTarget(moveAnim, myCheckbox);
        Storyboard.SetTargetProperty(moveAnim, new PropertyPath("(UIElement.RenderTransform).(TranslateTransform.X)"));
        storyboard.Completed += new System.EventHandler(storyboard_Completed);
        storyboard.Children.Add(moveAnim);
        storyboard.Begin();

不会抛出任何错误。 调用完成回调。 如果我以类似的方式设置不透明度,它可以正常工作。

如何使用代码简单地为UIElement的位置设置动画?

1 个答案:

答案 0 :(得分:3)

xyzzer的评论是正确的。造成混淆的原因是因为RenderTransformOrigin的坐标使用(0,1)相对于元素。实际变换(例如TranslateTransform)使用像素作为单位。