0

给定以下样式和名为的故事板animation<Window.Resources>我如何暂停(和恢复)从后面的代码触发的故事板((Storyboard)FindResource("animate")).Begin(Tab1, true);

以下代码错误表明PauseStoryboard事件找不到动画,这是有道理的,因为它不在模板中。该BeginStoryboard事件允许您绑定到资源,但暂停和恢复不能。

<Style x:Key="HiddenTabItem" TargetType="{x:Type TabItem}">
    <Setter Property="HeaderTemplate">
        <Setter.Value>
            <DataTemplate DataType="{x:Type TabItem}">
                <Border x:Name="grid">
                    <ContentPresenter>
                        <ContentPresenter.Content>
                            <TextBlock Text="{TemplateBinding Content}"/>
                        </ContentPresenter.Content>
                    </ContentPresenter>
                </Border>

                <DataTemplate.Triggers>
                    <EventTrigger RoutedEvent="MouseEnter">
                        <PauseStoryboard BeginStoryboardName="animate" />
                    </EventTrigger>
                </DataTemplate.Triggers>
            </DataTemplate>
        </Setter.Value>
    </Setter>
</Style>

动画故事板:

<Window.Resources>

    <Storyboard x:Key="animate">
        <ObjectAnimationUsingKeyFrames BeginTime="0:0:0" Storyboard.TargetProperty="Visibility">
            <DiscreteObjectKeyFrame KeyTime="0">
                <DiscreteObjectKeyFrame.Value>
                    <Visibility>Visible</Visibility>
                </DiscreteObjectKeyFrame.Value>
            </DiscreteObjectKeyFrame>
        </ObjectAnimationUsingKeyFrames>
        <DoubleAnimation BeginTime="0:0:0.0" Storyboard.TargetProperty="Opacity" From="0" To="1" Duration="0:0:0.2"/>
        <DoubleAnimation BeginTime="0:0:2.5" Storyboard.TargetProperty="Opacity" From="1" To="0" Duration="0:0:0.5"/>
        <ObjectAnimationUsingKeyFrames BeginTime="0:0:5.5" Storyboard.TargetProperty="Visibility">
            <DiscreteObjectKeyFrame KeyTime="0">
                <DiscreteObjectKeyFrame.Value>
                    <Visibility>Hidden</Visibility>
                </DiscreteObjectKeyFrame.Value>
            </DiscreteObjectKeyFrame>
        </ObjectAnimationUsingKeyFrames>
    </Storyboard>

</Window.Resources>
4

1 回答 1

1

如何暂停(和恢复)从后面的代码触发的情节提要

首先,保存对故事板的引用,该故事板是在代码隐藏中方便的位置启动的。由于您现在将其作为参考,请从您的目标控件订阅鼠标输入事件。无论是在 Xaml 中还是最有可能在代码隐藏中,都使用对情节提要的引用来暂停它。

从而消除了使用样式触发器的需要。

于 2013-09-25T14:35:07.073 回答