如何以编程方式创建翻译故事板动画UWP?

时间:2016-05-25 08:43:58

标签: c# uwp

我想为我的网格创建动态翻译Y动画,但我无法通过编程方式找到如何在UWP中创建动画。

我有这段代码,但它说

WinRT信息:无法解析指定对象上的TargetProperty TranslateY。

我试图将属性名称设置为Y,但它说:

WinRT信息:无法解析指定对象上的TargetProperty Y。

样品:

private void CreateStoryBoardAnimation(Grid myGrid)
{
    myGrid.RenderTransform = new CompositeTransform();

    Storyboard storyboard = new Storyboard();

    DoubleAnimation translateYAnimation = new DoubleAnimation();
    translateYAnimation.From = -500;
    translateYAnimation.To = 1;
    translateYAnimation.Duration = new Duration(TimeSpan.FromMilliseconds(500));

    Storyboard.SetTarget(translateYAnimation, myGrid);
    Storyboard.SetTargetProperty(translateYAnimation, "TranslateY");

    storyboard.Children.Add(translateYAnimation);

    storyboard.Begin();
} 

我也试过使用TranslateTransform课......但我不知道如何使用它。

Storyboard.SetTargetProperty只接受UWP中的字符串。

我想用动画在屏幕上移动我的网格。我知道如何在混合中制作故事板动画,但在这种情况下,这不是一个选项。

2 个答案:

答案 0 :(得分:4)

你的代码完全正确只使用这一行:

Storyboard.SetTargetProperty(translateYAnimation, "(UIElement.RenderTransform).(CompositeTransform.TranslateY)");

而不是

Storyboard.SetTargetProperty(translateYAnimation, "TranslateY");

那就是它。祝你有美好的一天:)

答案 1 :(得分:1)

我建议您在xaml中定义动画并更新代码中的所有必需参数:

<Grid>
    <Grid.Resources>
        <Storyboard x:Name="SlidingAnimatoin">
            <DoubleAnimation Storyboard.TargetName="TranslateTransform"
                             Storyboard.TargetProperty="Y"
                             From="100"
                             To="0"
                             Duration="0:0:0.5">
            </DoubleAnimation>
        </Storyboard>
    </Grid.Resources>
    <Grid.RenderTransform>
        <TranslateTransform x:Name="TranslateTransform"/>
    </Grid.RenderTransform>
</Grid>

在代码中,您可以按名称SlidingAnimatoin访问情节提要,并在DoubleAnimation更新所有属性。