如何在代码中为UWP控件XY位置制作动画



我正在尝试在代码中设置边界控件的位置动画。就我而言,我看不出这段代码有什么问题,但我在Storyboard上不断出现错误。Begin((

"未检测到已安装的组件。无法解析TargetProperty(UIElement.RenderTransformProperty(。(CompositeTransform.PranslateXProperty(在指定的对象上。

下面是我正在使用的代码:

Private Sub bdrTest1_PointerPressed(sender As Object, e As PointerRoutedEventArgs) Handles bdrTest1.PointerPressed
Animate(1, -100, 2)
End Sub
Private AnimateToX As Integer
Private AnimateToY As Integer
Private IsAnimating As Boolean
Private WithEvents Storyboard As Storyboard
Private Sub Animate(dx As Integer, dy As Integer, dt As Double)
bdrTest1.RenderTransform = New CompositeTransform
Dim duration As New Duration(TimeSpan.FromSeconds(dt))
Dim DoubleAnimationX As New DoubleAnimation With {
.Duration = duration,
.EasingFunction = New ExponentialEase() With {.Exponent = 7, .EasingMode = EasingMode.EaseOut},
.To = dx
}
AnimateToX = dx
Dim DoubleAnimationY As New DoubleAnimation With {
.Duration = duration,
.EasingFunction = New ExponentialEase() With {.Exponent = 7, .EasingMode = EasingMode.EaseOut},
.To = dy
}
AnimateToY = dy
Storyboard = New Storyboard With {.Duration = duration}
Storyboard.SetTarget(DoubleAnimationX, bdrTest1)
Storyboard.SetTargetProperty(DoubleAnimationX, "(UIElement.RenderTransformProperty).(CompositeTransform.TranslateXProperty)")
Storyboard.Children.Add(DoubleAnimationX)
Storyboard.SetTarget(DoubleAnimationY, bdrTest1)
Storyboard.SetTargetProperty(DoubleAnimationY, "(UIElement.RenderTransformProperty).(CompositeTransform.TranslateYProperty)")
Storyboard.Children.Add(DoubleAnimationY)
IsAnimating = True
Storyboard.Begin()
End Sub
Private Sub Storyboard_Completed(sender As Object, e As Object) Handles Storyboard.Completed
CType(sender, Storyboard).Stop()
IsAnimating = False
End Sub

我使用稍微相似的代码在页面上的滚动查看器中为大图像设置动画,效果很好,但我似乎无法将其转化为移动简单的控件。

如有任何帮助,我们将不胜感激。

好。经过几个小时的网络搜索,我发现了我的错误:

只需从路径名称中删除"属性"描述符,即可更改:

Storyboard.SetTargetProperty(DoubleAnimationX, "(UIElement.RenderTransformProperty).(CompositeTransform.TranslateXProperty)")

至:

Storyboard.SetTargetProperty(DoubleAnimationX, "(UIElement.RenderTransform).(CompositeTransform.TranslateX)")

现在它运行良好。

最新更新