2014-01-14 1 views
0

У меня вопрос по анимации WPF в 3D.Simultanious Animation of Elements в WPF

В моем элементе управления пользователя есть динамическое число элементов wpf, которые создаются в коде позади. Они расположены круговыми по оси y.

создать каждый элемент с начальным углом:

var trans = new AxisAngleRotation3D(); 
trans.Axis = new Vector3D(0, 1, 0); 
trans.Angle = initialAngleFromZero; 
RotateTransform3D elementTransform = new RotateTransform3D(trans); 
wpfElement.Transform = elementTransform; 

Каждый элемент затем отображается по желанию.

Теперь я хочу повернуть все динамически созданные объекты вокруг оси y под одним углом в то же время в коде позади. Как мне это? Я пробовал следующее:

foreach(var wpfElement in wpfElements) 
{ 
    var sb = new Storyboard(); 
    var ani = new DoubleAnimation(); 
    ani.Duration = new Duration(TimeSpan.FromSeconds(5)); 
    ani.From = fromAngle; 
    ani.To = toAngle; 
    sb.Children.Add(ani); 
    Storyboard.SetTarget(ani, wpfElement.Transform); 
    Storyboard.SetTargetProperty(ani, new PropertyPath(AxisAngleRotation3D.AngleProperty)); 
    sb.Begin(); 
} 

Но это не работает, ничего не происходит.

ответ

0

Чтобы сделать такую ​​групповую анимацию или анимировать сразу несколько объектов, вы можете обнаружить, что у вас больше успеха, разработав пользовательский Panel ... вы можете создать анимацию прямо в нее, а после ее разработки вы просто установите его как ItemsPanel для контроля коллекции пользовательского интерфейса и добавьте элементы, чтобы увидеть его анимированный. У меня есть несколько, и использовать их как это:

<ListBox ItemSource="{Binding SomeCollection}"> 
    <ListBox.ItemsPanel> 
     <ItemsPanelTemplate> 
      <Controls:AnimatedRotationPanel EntryAnimationType="Slide" 
EntryAnimationDirection="Up" HorizontalContentAlignment="Stretch" 
ExitAnimationType="Slide" ExitAnimationDirection="Down" /> 
     </ItemsPanelTemplate> 
    </ListBox.ItemsPanel> 
</ListBox> 

Как вы можете видеть, я добавил дополнительные свойства к Panel, чтобы обеспечить больше возможностей при его использовании, но вы можете сделать ваше простым или сложным, как вы хотите. Чтобы помочь вам в разработке этих Panel с, пожалуйста, обратите внимание на следующие ссылки и, пожалуйста, не получают откладывать то, что на первый, кажется, какой-то сложный код:

Panels Overview из MSDN
How to create a Custom Layout Panel in WPF на WPF Tutorial.NET
Creating Custom Panels In WPF из CodeProject
Animated WPF Panels от CodeProject