2011-05-01 2 views
4

....ControlTemplate에서 애니메이션 리소스를 얻는 방법은 무엇입니까?

<ControlTemplate TargetType="{x:Type CheckBox}"> 
       <ControlTemplate.Resources> 
        <Storyboard x:Key="OnChecking"> 
         <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" 
                 Storyboard.TargetName="slider" 
                 Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.X)"> 
          <SplineDoubleKeyFrame x:Name="SplineValue" 
                KeyTime="00:00:00.3000000" 
                Value="25" /> 
         </DoubleAnimationUsingKeyFrames> 
        </Storyboard> 
        <Storyboard x:Key="OnUnchecking"> 
         <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" 
                 Storyboard.TargetName="slider" 
                 Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.X)"> 
          <SplineDoubleKeyFrame KeyTime="00:00:00.3000000" 
                Value="0" /> 
         </DoubleAnimationUsingKeyFrames> 
         <ThicknessAnimationUsingKeyFrames BeginTime="00:00:00" 
                  Storyboard.TargetName="slider" 
                  Storyboard.TargetProperty="(FrameworkElement.Margin)"> 
          <SplineThicknessKeyFrame KeyTime="00:00:00.3000000" 
                Value="1,1,1,1" /> 
         </ThicknessAnimationUsingKeyFrames> 
        </Storyboard> 
       </ControlTemplate.Resources> 

....

나는 아래 문을 사용하여 뒤에 코드의 자원 "OnChecking"를 얻을 수 있습니다.

Storyboard stb1 = this.Template.Resources["OnChecking"] as Storyboard; 

하지만 어떻게 스토리 보드 안에 "SplineValue"SplineDoubleKeyFrame을 얻을 수 있습니까?

답변

1

이 작동합니다

Storyboard stb1 = chk.Template.Resources["OnChecking"] as Storyboard; 
DoubleAnimationUsingKeyFrames animation = 
         (DoubleAnimationUsingKeyFrames)stb1.Children[0]; 
var val = ((SplineDoubleKeyFrame)animation.KeyFrames[0]).Value; 
관련 문제