动态禁用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等效项。