动态禁用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等效的情况。