После просмотра нескольких примеров на этом сайте выяснилось, что тип анимации, который я хотел здесь , не так уж и сложен. Прямо сейчас у меня есть это в моем xaml
:
<ItemsControl ItemsSource="{Binding MyCollection}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel Name="Info">
<TextBlock Text="{Binding ItemName}"/>
<TextBlock Text="{Binding Quantity}"/>
<TextBlock Text="{Binding Price}"/>
</StackPanel>
<DataTemplate.Resources>
<Storyboard x:Key="Anim">
<DoubleAnimationUsingKeyFrames Storyboard.TargetName="Info"
Storyboard.TargetProperty="(UIElement.Opacity)">
<EasingDoubleKeyFrame KeyTime="0" Value="0" />
<EasingDoubleKeyFrame KeyTime="0:0:0.5" Value="1" />
</DoubleAnimationUsingKeyFrames>
</Storyboard>
</DataTemplate.Resources>
<DataTemplate.Triggers>
<EventTrigger RoutedEvent="Loaded">
<BeginStoryboard Storyboard="{StaticResource Anim}" />
</EventTrigger>
</DataTemplate.Triggers>
</DataTemplate>
</ItemsControl.ItemTemplate>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
в коде, я добавляю последний элемент на первое место следующим образом:
MyCollection.Insert(0, new Transaction()
{
Name = ItemName + " ",
Quantity = QuantityTraded,
Price = AtPrice
});
Со всеми этиминовый элемент исчезает в левом углу и толкает все существующие элементы вправо, но поведение быстро! Мне нужен перевод вместо непрозрачности, и для этого я должен иметь это в StackPanel
внутри DataTemplate
:
<StackPanel.RenderTransform>
<TransformGroup>
<TranslateTransform/>
</TransformGroup>
</StackPanel.RenderTransform>
Что мне нужно иметь в Storyboard
для TranslateTransform
? Будет ли он анимировать все существующие элементы или они будут привязаны к своей целевой позиции, как они делают с этим кодом?
Я пробовал с blend, который вставил:
<b:Interaction.Behaviors>
<b:FluidMoveBehavior Duration="0:0:5" AppliesTo="Children">
<b:FluidMoveBehavior.EaseY>
<BackEase EasingMode="EaseOut"/>
</b:FluidMoveBehavior.EaseY>
<b:FluidMoveBehavior.EaseX>
<BackEase EasingMode="EaseIn"/>
</b:FluidMoveBehavior.EaseX>
</b:FluidMoveBehavior>
</b:Interaction.Behaviors>
в ItemsControl
но это не изменило поведение!