DoubleAnimation不会更新Canvas.TopProperty / LeftProperty

时间:2019-02-13 21:34:40

标签: c# wpf canvas doubleanimation

我有一张以画布表示的地图。

此地图显示了一些城市,这些城市的Top和Left属性存储在City.Y和City.X属性中

现在,我正在尝试将一个物体从一个城市移动到另一个城市。我有这种方法:

private void UpdateUI(City target)
    {
        var top = Canvas.GetTop(Representation);
        var left = Canvas.GetLeft(Representation);
        Debug.WriteLine("top : " + Canvas.GetTop(Representation) + ", left : " + Canvas.GetLeft(Representation));
        int velocity = 2000;
        TranslateTransform trans = new TranslateTransform();
        Representation.RenderTransform = trans;
        DoubleAnimation animY = new DoubleAnimation(0, target.Y - top, TimeSpan.FromMilliseconds(velocity));
        DoubleAnimation animX = new DoubleAnimation(0, target.X - left, TimeSpan.FromMilliseconds(velocity));
        animY.Completed += (o, e) => Debug.WriteLine("top : " + Canvas.GetTop(Representation) + ", left : " + Canvas.GetLeft(Representation));
        trans.BeginAnimation(TranslateTransform.YProperty, animY);
        trans.BeginAnimation(TranslateTransform.XProperty, animX);
    }
  • Representation var是一个椭圆,代表我要移动到城市“目标”的实际对象
  • 第一个Debug.WriteLine显示椭圆的原始位置。第二,动画an DoubleY动画的完成是IMHO,它试图在动画之后显示椭圆的新位置。

我的问题是,即使我的Ellipse在Canvas上移动(我看到它在Canvas的表示中移动),两个Debug.WriteLine仍显示完全相同的值,原始值却没有显示新的Left和Top动画后应该具有的属性。

如何更新此属性或获取椭圆的实际位置而不是原始位置?

0 个答案:

没有答案