动态禁用EventTrigger \ Storyboard
时间:2020-03-06 15:04:06 来源:igfitidea点击:
<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并禁用情节提要,但是似乎没有任何合适的属性可以绑定到?
解决方案
Silverlight当前唯一可用的触发器是"已加载",对于所有其他事件,我们将不得不编写一些代码。要使用此技术,情节提要板应该放在"资源"部分而不是"触发器"中,然后我们将从代码中在情节提要板上调用Begin()。
如果要对控件进行模板化,则可以使用所谓的"过渡"来使我们根据控件事件(例如MouseOver)启动故事板。这由可视状态管理器处理:
http://timheuer.com/blog/archive/2008/06/04/silverlight-introduces-visual-state-manager-vsm.aspx
我并不是真的希望根据事件关闭动画。我也想基于我绑定的业务对象的属性来执行此操作?我希望有类似Storyboard.Enabled = False!?!?!
在Silverlight中,触发器无法满足要求。没有办法在触发器中包含条件。
我们可以连接Loaded事件,在此处检查条件,如果满足,则启动情节提要。但是,没有仅XAML等效项。