DoubleAnimation не обновляет Canvas.TopProperty / LeftProperty - PullRequest
0 голосов
/ 14 февраля 2019

У меня есть карта, представленная 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, которые должны иметь после анимации.

Как я могу обновить это свойство или получить фактическое положение эллипса вместо исходного?

...