Изменить содержимое метки в StoryBoard - PullRequest
0 голосов
/ 08 марта 2012

У меня есть этикетка в коде ниже:

 <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>

ярлык перемещается в мое окно, но я хочу изменить содержимое метки, когда приод запускается снова. если вы предложите код со списком <>, то вместо метки будет лучше.

1 Ответ

0 голосов
/ 08 марта 2012

Вы можете запустить анимацию один раз, затем по завершенному событию изменить содержимое метки, а затем продолжить запуск анимации.

Ваш код будет более компактным, если вы переместите анимацию вресурсы:

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 );
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...