Windows phone 8 设置元素动画时,DoubleAnimation不会设置最终的“左”和“顶”值

Windows phone 8 设置元素动画时,DoubleAnimation不会设置最终的“左”和“顶”值,windows-phone-8,Windows Phone 8,我正在尝试使用双动画设置/移动矩形。此动画完成后,我将启动另一个Double动画,但第二个动画将从第一个动画开始之前矩形的初始位置开始 以下是XAML文件: <Canvas> <Rectangle x:Name="myImage" Canvas.Left="10" Canvas.Top="10" Width="100" Height="100" Fill="Red"> <

我正在尝试使用双动画设置/移动矩形。此动画完成后,我将启动另一个Double动画,但第二个动画将从第一个动画开始之前矩形的初始位置开始

以下是XAML文件:

<Canvas>
    <Rectangle x:Name="myImage"
        Canvas.Left="10"
        Canvas.Top="10"
        Width="100"
        Height="100"
        Fill="Red">
    </Rectangle>
</Canvas>
我到底做错了什么?

不使用两个情节提要,您可以将两个动画添加到单个情节提要,并设置第二个动画的属性,使其在第一个动画完成后开始:

//animation 1
myImage.RenderTransform = new TranslateTransform();
DoubleAnimation anima1 = new DoubleAnimation();
anima1.Duration = TimeSpan.FromMilliseconds(2000);
anima1.To = 150;

Storyboard.SetTarget(anima1, myImage);
Storyboard.SetTargetProperty(anima1, new PropertyPath("(UIElement.RenderTransform).(TranslateTransform.X)"));

//animation 2
myImage.RenderTransform = new TranslateTransform();
DoubleAnimation anima2 = new DoubleAnimation();
anima2.Duration = TimeSpan.FromMilliseconds(2000);
anima2.To = 150;
//delay anima2 for 2 seconds to make it begin after anima1 completed
anima2.BeginTime = TimeSpan.FromMilliseconds(2000);

Storyboard.SetTarget(anima2, myImage);
Storyboard.SetTargetProperty(anima2, new PropertyPath("(UIElement.RenderTransform).(TranslateTransform.Y)"));

Storyboard storyboard = new Storyboard();
storyboard.Children.Add(anima1);
storyboard.Children.Add(anima2);
storyboard.Begin();

这确实会修复动画,但在动画结束后,如果我使用Canvas.GetTopmyImage和Canvas.Left使用Canvas.GetLeftmyImagevalues读取Canvas.Top,它们仍然设置为初始值10和10。我需要对这个元素进行进一步的操作,因此它们将失败。如何在动画完成后获得真正的Canvas.Top和Canvas.Left值并将其正确设置为矩形元素?显然,这是因为您既没有为Canvas.Left也没有为Canvas.Top设置动画。Top:Yey!对我来说,它使用Canvas.Left而不是新的PropertyPathCanvas.Left。由于第二条评论,我将接受你的回答。谢谢
//animation 1
myImage.RenderTransform = new TranslateTransform();
DoubleAnimation anima1 = new DoubleAnimation();
anima1.Duration = TimeSpan.FromMilliseconds(2000);
anima1.To = 150;

Storyboard.SetTarget(anima1, myImage);
Storyboard.SetTargetProperty(anima1, new PropertyPath("(UIElement.RenderTransform).(TranslateTransform.X)"));

//animation 2
myImage.RenderTransform = new TranslateTransform();
DoubleAnimation anima2 = new DoubleAnimation();
anima2.Duration = TimeSpan.FromMilliseconds(2000);
anima2.To = 150;
//delay anima2 for 2 seconds to make it begin after anima1 completed
anima2.BeginTime = TimeSpan.FromMilliseconds(2000);

Storyboard.SetTarget(anima2, myImage);
Storyboard.SetTargetProperty(anima2, new PropertyPath("(UIElement.RenderTransform).(TranslateTransform.Y)"));

Storyboard storyboard = new Storyboard();
storyboard.Children.Add(anima1);
storyboard.Children.Add(anima2);
storyboard.Begin();