2013-11-30 2 views
0

Я создал эту маленькую анимацию с помощью Expression Blend для прямоугольника с именем «Прямоугольник»C# эквивалент XAML кода для анимации

<Storyboard x:Name="flipanim"> 
      <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Projection).(PlaneProjection.RotationY)" Storyboard.TargetName="rect"> 
       <EasingDoubleKeyFrame KeyTime="0" Value="90"/> 
       <EasingDoubleKeyFrame KeyTime="0:0:0.3" Value="0"/> 
      </DoubleAnimationUsingKeyFrames> 
     </Storyboard> 

Теперь я хочу, чтобы показать эту анимацию для каждого элемента ListBox (генерируется с помощью ItemTemplate) загружается в runtime, Как установить свойство анимации listitems. Как я могу указать свойство TargetName для элементов списка? И если это невозможно, я хотел бы узнать, как преобразовать вышеуказанный код в C#.

ответ

0

Вы можете определить раскадровку внутри ItemTemplate, поэтому каждый элемент имеет свой собственный и использовать EventTrigger для события Loaded и Action для запуска вашей раскадровки. Определите раскадровку как ресурс первого элемента внутри вашего DataTemplate, чтобы вы могли получить доступ к именованным элементам (например, here).

1

Может это поможет вам

DoubleAnimation rotation = new DoubleAnimation(); 
      rotation.From = 0; 
      rotation.To = 90; 
      rotation.Duration = new Duration(TimeSpan.FromSeconds(0.5)); 
      Storyboard.SetTarget(rotation, rect); 
      Storyboard.SetTargetProperty(rotation, new PropertyPath("(UIElement.RenderTransform).(RotateTransform.Angle)")); 
      Storyboard flipanim= new Storyboard(); 
      flipanim.Children.Add(rotation); 
      flipanim.Begin(); 
Смежные вопросы