我正在尝试在可以动态添加和从可视树中删除的代码中为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。
答案 0 :(得分:0)
问题是您无法在代码中获得视觉效果。请尝试更改以下代码的位置:
TestGrid.Children.Add(myImage);
在图像定义后立即使用。然后它不会崩溃。但是动画不会发生,因为它是一个隐含的动画。