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属性的值,就知道应该怎么填了。