动态禁用EventTrigger \ Storyboard

问题描述:

<Grid.Triggers> 
    <EventTrigger RoutedEvent="Border.Loaded"> 
      <EventTrigger.Actions > 
        <BeginStoryboard> 
          <Storyboard x:Name="MyStoryboard" AutoReverse="True" RepeatBehavior="Forever"> 
            <ColorAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="border" Storyboard.TargetProperty="(Border.Background).(SolidColorBrush.Color)"> 
             <SplineColorKeyFrame KeyTime="00:00:01" Value="#FFFAFAFA"/> 
            </ColorAnimationUsingKeyFrames> 
          </Storyboard> 
        </BeginStoryboard> 
      </EventTrigger.Actions> 
    </EventTrigger> 
</Grid.Triggers> 

如何动态禁用此事件触发器\动画。我想我可以绑定到IValueConverter并禁用故事板,但似乎没有任何合适的属性绑定到?动态禁用EventTrigger Storyboard

目前Silverlight中唯一可用的触发器是“Loaded”,对于所有其他事件,您必须编写一些代码。要使用这种技术,故事板应该放在参考资料部分而不是触发器中,然后从代码中调用故事板上的Begin()。

如果你正在做一个控件的模板,那么就有所谓的转换,它允许你根据控件事件启动故事板,比如MouseOver。这是由视觉状态管理器处理:

http://timheuer.com/blog/archive/2008/06/04/silverlight-introduces-visual-state-manager-vsm.aspx

我是不是真的找动画基于事件被关闭。我想根据我的业务对象的属性来做到这一点,即Im绑定呢?我希望有一些像Storyboard.Enabled = False!?!?!

在Silverlight中,您无法使用触发器所要求的操作。触发器中没有条件的方法。 您可以连接Loaded事件,检查您的情况,如果符合条件,则启动故事板。但是,不存在仅与XAML等效的情况。