简体   繁体   English

如何将情节提要动画应用于多个xaml元素

[英]how to apply storyboard animation to multiple xaml element

I have created a storyboard animation, and it works for my one XAML element, however how can i apply it to multiple XAML elements ones? 我创建了一个情节提要动画,并且它适用于我的一个XAML元素,但是如何将其应用于多个XAML元素呢?

here is the XAML: 这是XAML:

<Storyboard x:Name="FlipOpen">
        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Projection).(PlaneProjection.RotationY)" Storyboard.TargetName="Front">
            <EasingDoubleKeyFrame KeyTime="0" Value="0"/>
            <EasingDoubleKeyFrame KeyTime="0:0:0.4" Value="-90"/>
        </DoubleAnimationUsingKeyFrames>
        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Projection).(PlaneProjection.RotationY)" Storyboard.TargetName="Back">
            <EasingDoubleKeyFrame KeyTime="0:0:0.4" Value="-270"/>
            <EasingDoubleKeyFrame KeyTime="0:0:0.8" Value="-360"/>
        </DoubleAnimationUsingKeyFrames>
    </Storyboard>

and the controlled XAML: 和受控的XAML:

                        <StackPanel Background="Blue" Width="420" x:Name="Front">
                            <StackPanel.Projection>
                                <PlaneProjection/>
                            </StackPanel.Projection>
                            <TextBlock Text="Front" FontSize="25" Height="40"/>
                            <TextBlock Text="alcim" FontSize="10" Height=" 20"/>
                        </StackPanel>

                        <StackPanel x:Name="Back" Width="420" Background="Red">
                            <StackPanel.Projection>
                                <PlaneProjection RotationY="-270" />
                            </StackPanel.Projection>
                            <TextBlock Text="Hátlap"/>
                        </StackPanel>
                    </Grid>

How can i create the controlled party in code (multiple times), and then apply the storyboard to it? 如何在代码中创建被控方(多次),然后对其应用情节提要? because they can't have the same x:Name property... 因为它们不能具有相同的x:Name属性...

Define your storyboard as a resource and reference it from the controls you want animate or from a style. 将情节提要板定义为资源,并从要设置动画的控件或样式中引用它。

  <Storyboard x:Key="FlipOpenStoryboard">
        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Projection).(PlaneProjection.RotationY)">
            <EasingDoubleKeyFrame KeyTime="0" Value="0"/>
            <EasingDoubleKeyFrame KeyTime="0:0:0.4" Value="-90"/>
        </DoubleAnimationUsingKeyFrames>
   </Storyboard>

Define in the stack panel when you want start the animation. 在开始动画时在堆栈面板中定义。

    <StackPanel Background="Blue" Width="420" x:Name="Front">
        <StackPanel.Triggers>
            <EventTrigger RoutedEvent="StackPanel.Loaded">
                <EventTrigger.Actions>
                    <BeginStoryboard Storyboard="{StaticResource FlipOpenStoryboard}" />
                </EventTrigger.Actions>
            </EventTrigger>
        </StackPanel.Triggers>
        <StackPanel.Projection>
            <PlaneProjection/>
        </StackPanel.Projection>

        <TextBlock Text="Front" FontSize="25" Height="40"/>
        <TextBlock Text="alcim" FontSize="10" Height=" 20"/>
    </StackPanel>

I don't have the PlaneProjection control so below I provide you a working example of animating the Height of the panel. 我没有PlaneProjection控件,因此在下面,我为您提供了一个使面板的高度动画化的工作示例。

The animation: 动画:

<Storyboard x:Key="FlipOpenStoryboard">
    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="Height" >
        <EasingDoubleKeyFrame KeyTime="0" Value="0"/>
        <EasingDoubleKeyFrame KeyTime="0:0:4" Value="500"/>
    </DoubleAnimationUsingKeyFrames>
</Storyboard>

The panel: 面板:

<StackPanel Background="Blue" Width="420" Height="100">
    <StackPanel.Triggers>
        <EventTrigger RoutedEvent="StackPanel.Loaded">
            <EventTrigger.Actions>
                <BeginStoryboard Storyboard="{StaticResource FlipOpenStoryboard}" />
            </EventTrigger.Actions>
        </EventTrigger>
    </StackPanel.Triggers>

    <TextBlock Text="Front" FontSize="25" Height="40"/>
    <TextBlock Text="alcim" FontSize="10" Height=" 20"/>
</StackPanel>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM