jim
jim

Reputation: 1025

WPF RotateTransform not working

I found below code to let my image(indicator1) rotation.

But it's nothing happened when I click the button.

Anyone know how to solve it?

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        RotateTransform rotateTransform = indicator1.RenderTransform as RotateTransform;

        DoubleAnimation doubleAnimation = new DoubleAnimation();
        doubleAnimation.From = 0;
        doubleAnimation.To = 360;
        doubleAnimation.Duration = new Duration(TimeSpan.FromMilliseconds(10000));

        Storyboard.SetTarget(doubleAnimation, rotateTransform);
        Storyboard.SetTargetProperty(doubleAnimation, new PropertyPath(RotateTransform.AngleProperty));

        Storyboard storyboard = new Storyboard();
        storyboard.RepeatBehavior = RepeatBehavior.Forever;
        storyboard.Children.Add(doubleAnimation);
        storyboard.Begin(this);
    }

Upvotes: 0

Views: 301

Answers (1)

You don't need the Storyboard. Using a Storyboard from code behind requires a workaround to get the target name lookup to to work. I haven't researched the exact cause of this, or whether or not it's always an issue. The code below works.

Note that you'll be setting RepeatBehavior on the DoubleAnimation now.

private void Button_Click(object sender, RoutedEventArgs e)
{
    RotateTransform rotateTransform = indicator1.RenderTransform as RotateTransform;

    DoubleAnimation doubleAnimation = new DoubleAnimation();
    doubleAnimation.From = 0;
    doubleAnimation.To = 360;
    doubleAnimation.Duration = new Duration(TimeSpan.FromMilliseconds(10000));

    doubleAnimation.RepeatBehavior = RepeatBehavior.Forever;

    rotateTransform.BeginAnimation(RotateTransform.AngleProperty, doubleAnimation);
}

Upvotes: 1

Related Questions