Silverlight4.0中移动一个元素动画的后台代码

        public Storyboard CreateMoveAnimation(UIElement animationTarget, Point sourcePoint, Point targetPoint, Duration duration)
        {
            //throw new NotImplementedException();

            DoubleAnimation xda = new DoubleAnimation(), yda = new DoubleAnimation();
            xda.From = sourcePoint.X;
            xda.To = targetPoint.X;
            yda.From = sourcePoint.Y;
            yda.To = targetPoint.Y;
            xda.Duration = yda.Duration = duration;
           
            //(animationTarget.RenderTransform).(CompositeTransform.TranslateXProperty)
            Storyboard.SetTarget(xda, animationTarget);
            Storyboard.SetTargetProperty(xda, new PropertyPath("(UIElement.RenderTransform).(CompositeTransform.TranslateX)"));
            Storyboard.SetTarget(yda, animationTarget);
            Storyboard.SetTargetProperty(yda, new PropertyPath("(UIElement.RenderTransform).(CompositeTransform.TranslateY)"));

            Storyboard sb = new Storyboard();
            sb.Children.Add(xda);
            sb.Children.Add(yda);
            sb.Begin();
            return sb;
        }

请注意正确使用SetTargetProperty里面的new PropertyPath,如果设置不正确动画没发正常显示。


如果不敢肯定自己要移动的那个元素是否能使用这种PropertyPath,请现在Blend或者VS中手动拖动出一个动画,分析生成的XAML文件中TargetProperty属性的值,就知道应该怎么填了。


你可能感兴趣的:(Silverlight4.0中移动一个元素动画的后台代码)