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