目前,我正在尝试使用Windows.UI.Composition
命名空间。
var offsetAnimation = compositor.CreateExpressionAnimation();
offsetAnimation.SetReferenceParameter("ps", _propertySet);
offsetAnimation.Expression = "ps.myValue";
var buttonVisual = ElementCompositionPreview.GetElementVisual(testButton);
buttonVisual .StartAnimation("Offset.X", offsetAnimation);
_propertySet
特定于页面,myValue
是从其他方法添加/更新的。
按钮的代码:
<Button x:Name="testButton" Background="Red" />
问题是按钮的Offset
没有改变,反而没有任何反应。但是,当我为Opacity
或Scale
属性设置动画时,同一个表达式正在运行。我也在页面中添加了WebView
,此处Offset
已正确设置动画。
答案 0 :(得分:0)
Offset的类型为 System.Numerics.Vector3 。一种更简单的动画制作方法是使用 Vector3KeyFrameAnimation 。
var newOffset = new Vector3(newValueX, newValueY, newValuez);
var offsetAnimation = compositor.CreateVector3KeyFrameAnimation();
offsetAnimation.Duration = TimeSpan.FromSeconds(1);
offsetAnimation.InsertKeyFrame(1f, newOffset);
var buttonVisual = ElementCompositionPreview.GetElementVisual(testButton);
buttonVisual .StartAnimation("Offset", offsetAnimation);
答案 1 :(得分:0)
如果您使用_propertySet
,则应从CompositionObject
类派生变量ExpressionAnimation.SetReferenceParameter
。您可以设置_anotherVisual.Offset.X
,但不能设置一些浮动字段。
如果您希望将视觉偏移设置为某个值,请执行隐式动画。