我有一张由 Canvas 表示的地图。
这张地图显示了一些城市,它们的 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 是一个 Ellipse,表示我想要移动到 City“目标”的实际对象
- 第一个 Debug.WriteLine 显示椭圆的原始位置。第二个,由 animY DoubleAnimation 的完成调用,恕我直言,试图在动画之后显示 Ellipse 的新位置。
我的问题是即使我的 Ellipse 在 Canvas 上移动(我看到它在 Canvas 的表示中移动),两个 Debug.WriteLine 显示完全相同的值,原始值但不是它应该的新 Left 和 Top 属性有动画之后。
如何更新此属性或获取 Ellipse 的实际位置而不是原始位置?