正如 Nigel 所提到的,这通常最好通过为 CompsiteTransform 或 TranslateTransform 的 TranslateX 或 TranslateY 属性设置动画来实现,如下所示。
<Storyboard x:Name="ShowThatFunkyEllipse">
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateX)" Storyboard.TargetName="MyMovingElement">
<EasingDoubleKeyFrame KeyTime="0" Value="-350"/>
<EasingDoubleKeyFrame KeyTime="0:0:0.2" Value="0" />
</DoubleAnimationUsingKeyFrames>
</Storyboard>
... snip ...
<Ellipse x:Name="MyMovingElement">
<Ellipse.RenderTransform>
<CompositeTransform TranslateX="-350" />
</Ellipse.RenderTransform>
</Ellipse>
请注意,我在此示例中使用了 DoubleAnimationUsingKeyframes - 如果您的动画是非线性的,它会提供更大的灵活性,但如果您愿意,可以只使用简单的 DoubleAnimation。此外,如果您愿意,可以将 CompositeTransform 切换为 TranslateTransform。我倾向于使用 CompositeTransform 再次允许元素上发生更多事情(旋转等)