读书人

WPF请教动画重叠

发布时间: 2013-07-16 22:38:05 作者: rapoo

WPF,请问动画重叠


<Window.Resources>
<Style x:Key="熊俊">
<Style.Triggers>
<EventTrigger RoutedEvent="ListBoxItem.MouseEnter">
<EventTrigger.Actions>
<BeginStoryboard >
<Storyboard>
<DoubleAnimation Storyboard.TargetProperty="FontSize" To="30" Duration="0:0:0.2" />
</Storyboard>
</BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>
<EventTrigger RoutedEvent="ListBoxItem.MouseLeave">
<EventTrigger.Actions>
<BeginStoryboard HandoffBehavior="SnapshotAndReplace">
<Storyboard>
<DoubleAnimation Storyboard.TargetProperty="FontSize" BeginTime="0:0:0.5" Duration="0:0:0.2" />
</Storyboard>


</BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>
</Style.Triggers>
</Style>
</Window.Resources>
<Grid Height="297" Name="grid1" Width="380">
<ListBox Height="157" HorizontalAlignment="Left" Margin="59,32,0,0" Name="listBox1" VerticalAlignment="Top" Width="195">
<ListBoxItem Content="张三" Style="{StaticResource 熊俊}"/>
<ListBoxItem Content="李四" Style="{StaticResource 熊俊}" />
</ListBox>
</Grid>



代码中,我把BeginStoryboard的HandoffBehavior属性设置为SnapshotAndReplace,但是当移开鼠标的时候,为什么上一个动画还是处于0.5秒的等待状态呢,两个动画衔接的时候,SnapshotAndReplace枚举值会新动画立即取代之前的重叠动画的啊。

哪里出错了呢,请问?
[解决办法]
因为你完成后会回到了初始状态,你应设置动态From
[解决办法]
引用:
Quote: 引用:

因为你完成后会回到了初始状态,你应设置动态From

我说的是,鼠标移到ListBox的一个项之后,迅速移到另一个项上面,为什么上一个动画还是处于0.5秒的等待状态呢(我设置的0.5秒),新动画立即取代之前的重叠动画的啊。

移到另外一个项上去跟你前面的动画有啥关系?你这动画对于每个项都是独立的啊
[解决办法]
应该先停止上一个动画才能让下一个动画正确的运作。lz可以试试。用StopStoryboard。

但是lz应该是希望在鼠标移开的时候让字体恢复?如果是这样,为什么又要开启另一个新的动画呢?

读书人网 >C#

热点推荐