【问题标题】:Setting manual control properties doesn't work before an animation in WPF在 WPF 中的动画之前设置手动控件属性不起作用
【发布时间】:2014-03-02 02:13:59
【问题描述】:

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

下面是对正在发生的事情的图片解释:

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

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

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

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

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

【问题讨论】:

    标签: c# wpf canvas wpf-animation doubleanimation


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2012-12-31
        • 2012-05-31
        • 2013-12-05
        • 1970-01-01
        • 2013-07-18
        • 1970-01-01
        • 2014-11-25
        • 2012-08-06
        相关资源
        最近更新 更多