我有一张以画布表示的地图。
此地图显示了一些城市,这些城市的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);
}
我的问题是,即使我的Ellipse在Canvas上移动(我看到它在Canvas的表示中移动),两个Debug.WriteLine仍显示完全相同的值,原始值却没有显示新的Left和Top动画后应该具有的属性。
如何更新此属性或获取椭圆的实际位置而不是原始位置?