2011-03-28 4 views
0

에서 나는 같은 애니메이션 dynamicaly 대상 이름을 변경하는 방법을 알고 싶어설정 targetName을 동적으로 DoubleAnimationUsingKeyFrames XAML

XAML 및 C# 코드에 대한 WPF의 내 코드가 검색 할

XAML 코드

<Storyboard x:Key="deepanshu"> 
    <DoubleAnimationUsingKeyFrames x:Name="gupta" 
            Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleX)" 
            Storyboard.TargetName="image1"> 
     <EasingDoubleKeyFrame KeyTime="0:0:0.3" Value="0.641"/> 
     <EasingDoubleKeyFrame KeyTime="0:0:0.5" Value="1"/> 
    </DoubleAnimationUsingKeyFrames> 
    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleY)" 
            Storyboard.TargetName="image1"> 
     <EasingDoubleKeyFrame KeyTime="0:0:0.3" Value="0.689"/> 
     <EasingDoubleKeyFrame KeyTime="0:0:0.5" Value="1"/> 
    </DoubleAnimationUsingKeyFrames> 
    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.X)" 
            Storyboard.TargetName="image1"> 
     <EasingDoubleKeyFrame KeyTime="0:0:0.3" Value="-1"/> 
     <EasingDoubleKeyFrame KeyTime="0:0:0.5" Value="0"/> 
    </DoubleAnimationUsingKeyFrames> 
    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.Y)" 
            Storyboard.TargetName="image1"> 
     <EasingDoubleKeyFrame KeyTime="0:0:0.3" Value="0.5"/> 
     <EasingDoubleKeyFrame KeyTime="0:0:0.5" Value="0"/> 
    </DoubleAnimationUsingKeyFrames> 
</Storyboard> 

C#을

Storyboard sb = (Storyboard)FindResource("deepanshu"); 
,

이제 storyboaname을 image1에서 image2로 변경하는 방법은 무엇입니까?

감사 감사합니다, Deepanshu

답변

1
Storyboard sb = (Storyboard)FindResource("deepanshu"); 
foreach (var animation in sb.Children) 
{ 
    Storyboard.SetTargetName(animation, "image2"); 
} 
0

무엇 H.B. 고 말했다. XAML에서는 이처럼 TargetName을 지정하지 않고 스토리 보드를 넣습니다.

<Storyboard x:Key="OpacityUpAnim"> 
     <DoubleAnimation Storyboard.TargetProperty="Opacity" From="0" To="1" Duration="0:0:1.3"> 
      <DoubleAnimation.EasingFunction> 
       <CubicEase EasingMode="EaseOut" /> 
      </DoubleAnimation.EasingFunction> 
     </DoubleAnimation> 
</Storyboard> 

for C# 저는 애니메이션을 호출하는 사용자 지정 함수를 작성했습니다.

private void RunStoryBoardFromName(string animName, string targetName = null) 
    { 
     Storyboard storyBoard = (Storyboard)this.Resources[animName]; 
     if (targetName != null) 
     { 
      foreach (var anim in storyBoard.Children) 
      { 
       Storyboard.SetTargetName(anim, targetName); 
      } 
     } 
     storyBoard.Begin(); 
    } 

는 내가

RunStoryBoardFromName("OpacityUpAnim", "PopupGrid"); 
같은 C#으로라고 불렀다