在查看了本网站上的几个示例之后,看来我想要的here动画类型并不难。现在,我在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
内部,但这并没有改变行为!