在WPF中设置动画之前,设置手动控制属性不起作用

时间:2014-03-02 02:13:59

标签: c# wpf canvas wpf-animation doubleanimation

我在Canvas中有一张图片,但是当我使用DoubleAnimation移动它然后使用Canvas.SetLeft(image)时,该方法被忽略,再次移动它的唯一方法是动画。 Canvas.SetLeft(control)有什么问题?

以下是对正在发生的事情的图像的解释:

enter image description here

Canvas.Left属性中的默认硬币位置为0。

enter image description here

我用鼠标移动下一个代码;

Point p = Mouse.GetPosition(cCoinContainer);
Canvas.SetLeft(iCoin, p.X);

enter image description here

当鼠标离开画布时,动画会将硬币移动到原来的Canvas.Left位置。

问题是当我再次这样做时(用Canvas.SetLeft(iCoin, p.X);鼠标移动硬币它完全被忽略,只适用于动画。

2 个答案:

答案 0 :(得分:2)

您的问题似乎是关于Animation Tips and Tricks的MSDN帖子中解决的一般问题之一。要解决此问题,请尝试将动画的FillBehavior设置为Stop

<Storyboard>
    <DoubleAnimation 
        FillBehavior="Stop"
        ......
        />
</Storyboard>
  

通过将FillBehavior设置为Stop,可以告诉动画在达到活动期间结束后停止影响其目标属性。 [MSDN]

答案 1 :(得分:0)

我想你想用鼠标拖动图像?如果是对的; 你应该在矩形上添加一个MouseCapture()来用鼠标动画更新鼠标位置 并在完成后调用RealeaseMouseCapture;在MouseUp Event 导致GetMousePosition返回当前鼠标位置一次。 祝好运。 如果你需要一些,请随意提问!