Анимация WPF не воспроизводится

У меня есть следующий xaml, чтобы показать вращающийся Ellipse:

<Ellipse x:Name="ellipse"
         Stroke="{StaticResource _SpinnerGradientBrush}"
         StrokeThickness="20"                
         RenderTransformOrigin="0.5,0.5">
    <Ellipse.RenderTransform>
        <TransformGroup>
            <RotateTransform Angle="0" />
        </TransformGroup>
    </Ellipse.RenderTransform>
    <Ellipse.Triggers>
        <EventTrigger RoutedEvent="Ellipse.Loaded">
            <BeginStoryboard>
                <Storyboard>
                    <DoubleAnimationUsingKeyFrames
                          Storyboard.TargetName="ellipse"
                          Storyboard.TargetProperty="(Ellipse.RenderTransform).(RotateTransform.Angle)"
                          Duration="0:0:4" 
                          RepeatBehavior="Forever">
                        <LinearDoubleKeyFrame Value="0" KeyTime="0:0:0" />
                        <LinearDoubleKeyFrame Value="359" KeyTime="0:0:4" />
                    </DoubleAnimationUsingKeyFrames>
                </Storyboard>
            </BeginStoryboard>
        </EventTrigger>
    </Ellipse.Triggers>
</Ellipse>

Окно будет отображаться, как и ожидалось, но анимация никогда не запускается. У меня это работало в Blend, но по какой-то причине это не работает, когда я фактически использую xaml в своем приложении. Если у кого есть идеи буду признателен.


person Switters    schedule 01.12.2009    source источник


Ответы (1)


Удалите теги ‹TransformGroup›, вам нужно только:

<Ellipse.RenderTransform>
    <RotateTransform Angle="0" />
</Ellipse.RenderTransform>

В качестве альтернативы назначьте имя RotateTransform, которое вы хотите анимировать, и укажите его в анимации (изменено на DoubleAnimation, поскольку оно короче):

<Ellipse.RenderTransform>
    <TransformGroup>
        <RotateTransform Angle="0" x:Name="ellipseRotateTransform" />
    </TransformGroup>
</Ellipse.RenderTransform>
<Ellipse.Triggers>
    <EventTrigger RoutedEvent="Ellipse.Loaded">
        <BeginStoryboard>
            <Storyboard>
                <DoubleAnimation
                    Storyboard.TargetName="ellipseRotateTransform"
                    Storyboard.TargetProperty="Angle"
                    From="0" To="359"
                    Duration="0:0:4" 
                    RepeatBehavior="Forever">
                </DoubleAnimation>
            </Storyboard>
        </BeginStoryboard>
    </EventTrigger>
</Ellipse.Triggers>
person Stanislav Kniazev    schedule 01.12.2009