Невозможность анимировать TranslateTransform.XProperty с помощью кода - PullRequest
0 голосов
/ 09 августа 2011

У меня есть метод, который позволяет мне анимировать объекты, связанные с DoubleAnimation:

public void animDouble(DependencyObject target, DependencyProperty property, double to, TimeSpan duration, double? from = null, TimeSpan? beginTime = null, IEasingFunction e = null)
{

    DoubleAnimation animation = new DoubleAnimation();
    animation.To = to;

    if (beginTime == null)
        beginTime = TimeSpan.FromSeconds(0);

    if (from != null)
        animation.From = from;


    animation.BeginTime = beginTime;
    animation.Duration = duration;


    if (e != null)
        animation.EasingFunction = e;

    //start animating
    Storyboard.SetTarget(animation, target);  // what object will be animated?
    Storyboard.SetTargetProperty(animation, new PropertyPath(property)); // what property will be animated
    Storyboard sb = new Storyboard();
    sb.Children.Add(animation);
    sb.Begin();
}

поэтому, если у меня есть граница, например, br1, и я хочу анимировать ее высоту, я вызову метод как:

animDouble(br1, FrameworkElement.HeightProperty, 150, TimeSpan.FromSeconds(5));

если я хочу оживить его ширину, я сделаю:

animDouble(br1, FrameworkElement.WidthProperty, 150, TimeSpan.FromSeconds(5));

Я мог бы также оживить его видимость тем же методом.

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

a.animDouble(br1, TranslateTransform.XProperty, 150, TimeSpan.FromSeconds(5));

Граница не оживляет. Я не получаю ошибок эфира.

Ответы [ 2 ]

0 голосов
/ 09 августа 2011

Это было связано с регистрацией имени. Я нашел ссылку в здесь

Я не знаю, что делает метод registerName, но я думаю, что он мне нужен. со страницы мне удалось получить основные анимации. Я не мог оживить две вещи одновременно. Если вам интересно посмотреть на метод, посмотрите на этот вопрос . Я думаю, что это симпатичный класс, который позволит создавать анимацию с кодом. Скопируйте пространство имен в Visual Studio и скопируйте первый пример, который я опубликовал, чтобы вы могли увидеть, как он работает.

0 голосов
/ 09 августа 2011

Каким-то образом я ожидал ошибки, ну, в любом случае, Border не имеет такого свойства, если вы хотите переместить элемент управления, вам нужно установить RenderTransform или LayoutTransform границы на TranslateTransform, затем вы можете передать само преобразование в метод в качестве цели.

( Вся раскадровка ужасно избыточна, поскольку у вас есть только одна анимация, вы можете просто вызвать BeginAnimation для самой цели )

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...