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

4

我想为我的网格创建动态的TranslateY动画,但我找不到如何在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类...但我不知道如何使用它。

在UWP中,Storyboard.SetTargetProperty只接受一个字符串。

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

2个回答

5

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

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

代替
Storyboard.SetTargetProperty(translateYAnimation, "TranslateY");

就是这样了。祝你有美好的一天 :)


SetTargetProperty不接受字符串作为参数,只接受“PropertyPath”。 - Matteo Gariglio
@MatteoGariglio,你看错了API。UWP确实有一个SetTargetProperty(Timeline element, string path)的方法。 https://learn.microsoft.com/en-us/uwp/api/windows.ui.xaml.media.animation.storyboard.settargetproperty?view=winrt-19041 - felixperreault

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>

在代码中,您可以通过名称 SlidingAnimation 访问故事板,并更新任何属性,甚至在 DoubleAnimation 中。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接