【问题标题】:How can I create Translate storyboard animation programmatically UWP?如何以编程方式创建翻译故事板动画 UWP?
【发布时间】:2016-05-25 08:43:58
【问题描述】:

我想为我的网格创建动态平移 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 中的字符串。

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

【问题讨论】:

    标签: c# uwp


    【解决方案1】:

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

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

    而不是

    Storyboard.SetTargetProperty(translateYAnimation, "TranslateY");
    

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

    【讨论】:

    • SetTargetProperty 不接受字符串作为参数,而只接受“PropertyPath”
    • @MatteoGariglio 您正在查看错误的 api。 UWP 确实有一个 SetTargetProperty(Timeline element, string path) docs.microsoft.com/en-us/uwp/api/…
    【解决方案2】:

    我建议你在 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 中的任何属性。

    【讨论】:

      猜你喜欢
      • 2021-12-15
      • 2021-08-29
      • 1970-01-01
      • 1970-01-01
      • 2015-03-16
      • 1970-01-01
      • 1970-01-01
      • 2012-07-04
      • 1970-01-01
      相关资源
      最近更新 更多