如何以编程方式创建翻译情节提要动画 UWP



我想为我的网格创建动态翻译 Y 动画,但我找不到如何在 UWP 中以编程方式执行此操作。

我有这个代码,但它说

WinRT 信息:无法解析指定对象上的目标属性转换 Y。

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

WinRT 信息:无法解析指定对象上的目标属性 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();
} 

我也尝试使用翻译转换类...但我不明白我怎么能使用它。

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

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

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

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

而不是

Storyboard.SetTargetProperty(translateYAnimation, "TranslateY");

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

我建议您在 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 中也可以更新任何属性。

最新更新