我想为我的网格创建动态翻译 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
中也可以更新任何属性。