Composition API Implicit Show&隐藏代码中的动画

时间:2018-02-17 08:32:24

标签: c# uwp windows-community-toolkit

我正在尝试在可以动态添加和从可视树中删除的代码中为UIElements创建隐式显示和隐藏动画。我尝试了以下内容:

private void testButton_Tapped(object sender, TappedRoutedEventArgs e)
{
    var myImage = new Image();
    myImage.Source = new BitmapImage(new Uri("https://upload.wikimedia.org/wikipedia/commons/c/c4/PM5544_with_non-PAL_signals.png"));
    var visual = ElementCompositionPreview.GetElementVisual(myImage);
    var animation = visual.Compositor.CreateVector3KeyFrameAnimation();
    var easing = visual.Compositor.CreateLinearEasingFunction();
    animation.InsertKeyFrame(0f, new Vector3(1200f, 0f, 0f), easing);
    ElementCompositionPreview.SetImplicitShowAnimation(myImage, animation);
    TestGrid.Children.Add(myImage);
}

...并且app和调试器因未处理的异常而崩溃。单步执行代码,只要我越过方法的右括号就会发生崩溃。另请注意,我尝试了相同的代码,但使用了所有全局变量,因此我认为不是GC。

1 个答案:

答案 0 :(得分:0)

问题是您无法在代码中获得视觉效果。请尝试更改以下代码的位置:

    TestGrid.Children.Add(myImage);

在图像定义后立即使用。然后它不会崩溃。但是动画不会发生,因为它是一个隐含的动画。