Почему не работает анимация вращения Silverlight на моем Windows Phone? - PullRequest
0 голосов
/ 02 апреля 2012

У меня есть это в моем XAML:

            <Grid.Resources>
                <Storyboard x:Name="Storyboard_Animation">
                    <DoubleAnimation 
                            Storyboard.TargetName="button_Submit" 
                            Storyboard.TargetProperty="Angle" 
                            From="0" 
                            To="360" 
                            Duration="0:0:1"></DoubleAnimation>
                </Storyboard>
            </Grid.Resources>

У меня есть кнопка в той же Grid:

            <Button Grid.Row="0" Grid.Column="1" Content="Submit" Margin="0" Name="button_Submit" Click="button_Submit_Click">
                <Button.Template>
                    <ControlTemplate>
                        <Image Source="Images/buttonImage.png"></Image>
                    </ControlTemplate>
                </Button.Template>
                <Button.RenderTransform>
                    <RotateTransform></RotateTransform>
                </Button.RenderTransform>
            </Button>

У меня есть это в моем методе щелчка:

    private void button_Submit_Click(object sender, RoutedEventArgs e)
    {
        Storyboard_Animation.Begin();
    }

Когда я нажимаю на мою кнопку, я получаю сообщение об ошибке: Не удается разрешить TargetProperty Angle для указанного объекта.

Но я понятия не имею, что я должен использовать, кроме Angle.

У меня есть другой фрагмент кода, который отлично работает:

    private void RotateStar()
    {
        button_Submit.RenderTransformOrigin = new Point(0.5, 0.5);
        button_Submit.RenderTransform = new RotateTransform();
        DoubleAnimation da = new DoubleAnimation
        {
            From = 0,
            To = 360,
            Duration = TimeSpan.FromSeconds(0.3)
        };
        Storyboard.SetTarget(da, button_Submit.RenderTransform);
        Storyboard.SetTargetProperty(da, new PropertyPath(RotateTransform.AngleProperty));
        Storyboard sb = new Storyboard();
        sb.Children.Add(da);
        sb.Begin();
    }

Я бы хотел поместить раскадровку в XAML, а не в код.Что мне нужно добавить / изменить в моей версии XAML, чтобы она работала как версия кода?

Ответы [ 2 ]

1 голос
/ 02 апреля 2012

Попробуйте это:

<Grid.Resources>
    <Storyboard x:Name="Storyboard_Animation">
        <DoubleAnimation 
            Storyboard.TargetName="button_Submit" 
            Storyboard.TargetProperty="(UIElement.RenderTransform).(RotateTransform.Angle)" 
            From="0" 
            To="360" 
            Duration="0:0:1">
        </DoubleAnimation>
    </Storyboard>
</Grid.Resources>
1 голос
/ 02 апреля 2012

Ваша проблема в использовании TargetProperty.Кнопка не имеет свойства Angle, вы должны использовать его для RenderTransform.

Вот так:

 <Storyboard x:Name="Storyboard_Animation">
                                <DoubleAnimation Duration="0:0:1" To="-180.221" Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.Rotation)" Storyboard.TargetName="button" d:IsOptimized="True"/>
   </Storyboard>

С уважением, Роман.

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