2009-10-01 130 views
4

我想在动画完成时收到通知。 但是,当我应用以下代码时,出现以下错误WPF - ColorAnimation完成事件

“事件'已完成'无法在样式中的目标标记上指定,请使用EventSetter。

<Style x:Key="CredentialEntryListViewItemStyle" TargetType="{x:Type ListViewItem}" BasedOn="{StaticResource alternatingListViewItem}"> 
    <Setter Property="HorizontalContentAlignment" Value="Stretch" /> 
    <Setter Property="VerticalContentAlignment" Value="Stretch" /> 
    <Style.Triggers> 
    <DataTrigger Binding="{Binding IsDuplicated}" Value="True"> 
     <DataTrigger.EnterActions> 
     <BeginStoryboard> 
      <Storyboard> 
      <ColorAnimation AutoReverse="True" 
          RepeatBehavior="2x" 
          Completed="OnColorAnimationCompleted" 
          Storyboard.TargetProperty="Foreground.(SolidColorBrush.Color)" 
          To="Orange" Duration="0:0:0.3"/> 
      </Storyboard> 
     </BeginStoryboard> 
     </DataTrigger.EnterActions> 
    </DataTrigger> 
    </Style.Triggers> 
</Style> 

回答

4

我认为这个问题是WPF不能“巧妙”您的ListViewItem挂钩您OnColorAnimationCompleted事件,因为它没有办法知道你的ListViewItem的类型是什么方式,因此不能订阅OnColorAnimationCompleted已完成的事件。

编辑:你可以做任何你需要做的退出行动?

+1

谢谢! 我遇到的真正问题是,一旦动画完成,我想要将控件的颜色强制为原始颜色。原因是,如果动画在短时间内多次启动,颜色将不会恢复为原始颜色。解决我的问题是FillBehavior停止。 “通过将FillBehavior设置为”停止“,您可以告诉动画在其达到活动期限结束后停止影响其目标属性。” 感谢您的回答,它帮助我更了解WPF。 干杯! – Terenced 2009-10-02 14:21:07