更改StoryBoard中标签的内容

时间:2012-03-08 07:42:56

标签: wpf storyboard

我在下面的代码中有一个标签:

 <Window.Triggers>
            <EventTrigger RoutedEvent="Loaded">
                <BeginStoryboard>
                    <Storyboard FillBehavior="Stop" >
                        <DoubleAnimation RepeatBehavior="Forever"
                    Storyboard.TargetName="Transform" 
                    Storyboard.TargetProperty="X" 
                    From="220" To="-1300" Duration="0:0:15" />
                    </Storyboard>
                </BeginStoryboard>
            </EventTrigger>
        </Window.Triggers>

    <StackPanel >
       <Label Content="Hello! your Welcome" HorizontalAlignment="Right" FontSize="11">
                    <Label.RenderTransform>
                        <TranslateTransform   x:Name="Transform" X="0" Y="0"/>
                    </Label.RenderTransform>
       </Label>
    </StackPanel>

标签进入我的窗口,但我想更改内容 再次启动priod时的标签。 如果您建议使用List&lt;&gt;的代码贴上标签会更好。

1 个答案:

答案 0 :(得分:0)

您可以运行一次动画,然后在已完成的事件上更改标签的内容,然后继续运行动画。

如果将动画移动到资源,您的代码将更加紧凑:

XAML:

<Window.Resources>
    <DoubleAnimation x:Key="da"
        Completed="DoubleAnimation_Completed"
        From="220" To="-1300" Duration="0:0:15"
        />
</Window.Resources>

<StackPanel>
    <Label x:Name="lbl" Content="Hello! your Welcome" HorizontalAlignment="Right" FontSize="11">
        <Label.RenderTransform>
            <TranslateTransform x:Name="Transform" X="0" Y="0"/>
        </Label.RenderTransform>
    </Label>
</StackPanel>

代码背后:

    private void DoubleAnimation_Completed( object sender, EventArgs e ) {
        this.lbl.Content = "Second time";
        DoubleAnimation da = this.Resources[ "da" ] as DoubleAnimation;
        TranslateTransform tr = this.Transform;
        da.Completed -= DoubleAnimation_Completed;
        da.RepeatBehavior = RepeatBehavior.Forever;
        tr.BeginAnimation( TranslateTransform.XProperty, da );
    }

    private void Window_Loaded( object sender, RoutedEventArgs e ) {
        DoubleAnimation da = this.Resources[ "da" ] as DoubleAnimation;
        TranslateTransform tr = this.Transform;
        tr.BeginAnimation( TranslateTransform.XProperty, da );
    }