WPF - анимация RotateTransform не сохраняет текущий угол

У меня есть ToggleButton, который включает многоугольник в состоянии Checked. Я поворачиваю многоугольник на 90 градусов.

Проблема в том, что после завершения поворота многоугольник возвращается к исходному углу.

мой ToggleButton: (частичный шаблон)

    <ControlTemplate TargetType="{x:Type ToggleButton}">
        <VisualStateManager.VisualStateGroups>
            <VisualStateGroup x:Name="FocusStates">
                <VisualState x:Name="Unfocused"/>
                <VisualState x:Name="Focused"/>
            </VisualStateGroup>
            <VisualStateGroup x:Name="CommonStates">
                <VisualStateGroup.Transitions>
                   <VisualTransition GeneratedDuration="00:00:00.3"/>                               
                </VisualStateGroup.Transitions>
                <VisualState x:Name="MouseOver"/>
                <VisualState x:Name="Normal"/>
                <VisualState x:Name="Pressed"/>
                <VisualState x:Name="Disabled"/>
            </VisualStateGroup>
            <VisualStateGroup x:Name="CheckStates">
                <VisualStateGroup.Transitions>
                   <VisualTransition GeneratedDuration="0" To="Checked">
                    <Storyboard>                                            
                       <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[2].(RotateTransform.Angle)" Storyboard.TargetName="regularPolygon">
                            <EasingDoubleKeyFrame KeyTime="0:0:0.5" Value="90" />
                       </DoubleAnimationUsingKeyFrames>
                    </Storyboard>
                </VisualTransition>                                                
                    <VisualState x:Name="Indeterminate"/>
                    <VisualState x:Name="Checked"/>
                    <VisualState x:Name="Unchecked"/>
                </VisualStateGroup>
            </VisualStateManager.VisualStateGroups>                     
                <Polygon x:Name="regularPolygon" 
                    Points="5,10 10,5 5,0"
                    RenderTransformOrigin="0.5,0.5" 
                    Stretch="Fill"                          
                    UseLayoutRounding="False">
                     <Polygon.RenderTransform>
                      <TransformGroup>
                        <ScaleTransform/>
                        <SkewTransform/>
                        <RotateTransform />
                        <TranslateTransform/>
                          </TransformGroup>
                     </Polygon.RenderTransform>                        
                </Polygon>                                          
            </ControlTemplate>

мне нужно внести некоторые изменения, чтобы полигон сохранил свой новый угол? заранее спасибо .


person eran otzap    schedule 12.08.2013    source источник


Ответы (1)


Проблема была в том, что я поместил анимацию внутри перехода, а не как само состояние.

  <VisualState x:Name="Checked">
     <Storyboard>
        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="Angle" Storyboard.TargetName="rotateTransform">
             <EasingDoubleKeyFrame KeyTime="0:0:0.7" Value="90"/>
        </DoubleAnimationUsingKeyFrames>
      </Storyboard>
   </VisualState>
person eran otzap    schedule 12.08.2013