WindowsPhone7: Как оживить положение UIElement с помощью кода? - PullRequest
3 голосов
/ 11 декабря 2011

Кажется, все должно быть так просто. Я прочитал десятки ссылок, и я не могу получить ничего, чтобы оживить позицию. Я полагаю, что самый близкий код, который я могу написать до сих пор:

 Storyboard storyboard = new Storyboard();
 TranslateTransform trans = new TranslateTransform() { X = 1.0, Y = 1.0 };
        myCheckbox.RenderTransformOrigin = new Point(0.5, 0.5);
        myCheckbox.RenderTransform = trans;

        DoubleAnimation moveAnim = new DoubleAnimation();
        moveAnim.Duration = TimeSpan.FromMilliseconds(1200);
        moveAnim.From = -1;
        moveAnim.To = 1;
        Storyboard.SetTarget(moveAnim, myCheckbox);
        Storyboard.SetTargetProperty(moveAnim, new PropertyPath("(UIElement.RenderTransform).(TranslateTransform.X)"));
        storyboard.Completed += new System.EventHandler(storyboard_Completed);
        storyboard.Children.Add(moveAnim);
        storyboard.Begin();

Ошибки не выдаются. Обратный вызов завершения вызывается. Если я анимирую непрозрачность подобным образом, она работает нормально.

Как я могу просто анимировать позицию UIElement с помощью кода ??

1 Ответ

3 голосов
/ 28 февраля 2012

Комментарий от xyzzer был верным.Причина путаницы заключалась в том, что для координат RenderTransformOrigin используется (0,1) относительно элемента.Фактические преобразования (например, TranslateTransform) используют пиксели в качестве единиц измерения.

...