我有一个画布,包括一些元素,以显示机器人的手臂。这只手臂可以通过动画伸展和拉回。
现在我需要初始化手臂并在某些情况下保持折叠状态(不是通过动画)。所以我需要重置RotateTransform的角度属性。
<Canvas x:Name="RobotArm_Left" Width="60" Height="10" RenderTransformOrigin="0.9167,0.5" Canvas.Top="62.5" Canvas.Left="12.5">
<Canvas.RenderTransform>
<TransformGroup>
<RotateTransform x:Name="Rotate_RobotArm_Left" />
</TransformGroup>
</Canvas.RenderTransform>
</Canvas>我使用两种方法来设置角度:
((RotateTransform)page.FindName("Rotate_RobotArm_Left")).Angle=0; //0 is the init value
((RotateTransform)page.FindName("Rotate_RobotArm_Left")).SetValue(RotateTransform.AngleProperty, 0.0);它们都不起作用。
当我看到((RotateTransform)page.FindName("Rotate_RobotArm_Left")).Angle,的值时,它是-55。
有没有一种方法可以设置这个属性?
否则,在运行动画之前,角度属性可以在动画之后设置为changed.But,该属性不能更改。
谢谢。
发布于 2011-10-22 17:14:38
动画值优先于本地设置的值。停止动画(在这种情况下,该值将恢复为一致的值)或将其设置为所需的值。有关详细信息,请参阅dependency property precedence。
在这种情况下,使用SetCurrentValue有点麻烦,因为您将替换动画产生的值,而不是将动画作为值源完全删除。换句话说,动画仍然处于活动状态,您只是更改了它报告的值。
发布于 2011-10-22 17:43:31
另一种方法可能很有用:
不要为旋转设置动画,而是为对象的属性设置动画并将旋转角度绑定到该属性。这将允许您控制动画,并将您从知道/查找XAML中的元素中解放出来。
https://stackoverflow.com/questions/7857114
复制相似问题