0

我正在尝试在可以从可视树中动态添加和删除的代码中为 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);
}

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

4

1 回答 1

0

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

    TestGrid.Children.Add(myImage);

把它放在你的图像定义之后。然后它不会崩溃。但动画不会发生,因为它是一个隐式动画。

于 2018-02-19T09:37:11.117 回答