У меня есть карта, представленная Canvas.
На этой карте показаны некоторые города, свойства которых сверху и слева хранятся в свойствах 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);
}
- Var представляет собой Ellipse, представляющий фактический объект, который я хочу переместить в "цель" города
- Первый Debug.WriteLine показываетисходное положение эллипса.Второй, называемый завершением анимации DoubleAnimation, - это, IMHO, попытка показать новую позицию эллипса после анимации.
Моя проблема, даже если мой эллипс движется поCanvas (я вижу, что он движется в представлении Canvas), два Debug.WriteLine показывают точно такие же значения, исходные, но не новые свойства Left и Top, которые должны иметь после анимации.
Как я могу обновить это свойство или получить фактическое положение эллипса вместо исходного?