【发布时间】:2016-03-03 17:28:59
【问题描述】:
我想将所有图像从列表设置为网格。但是我在使用Children.Add 在网格中添加第二张图像时遇到问题。
这是我的例子:
List<Image> images = new List<Image>(8);
images.AddRange(Enumerable.Repeat(new Image(), 8));//8 empty images
然后设置图片:
foreach (var image in images)
{
BitmapImage b = new BitmapImage();
b.BeginInit();
b.UriSource = new Uri("path");
b.EndInit();
image.Source = b;
image.Width = 50;
image.Height = 50;
}
然后在这样的一个函数调用中:
private void put_images()
{
int i = 0;
foreach (var image in images)
{
Grid.SetRow(image, i);
Grid.SetColumn(image, i);
LayoutRoot.Children.Add(image);//here is error
i++;
}
}
我遇到运行时错误:Additional information: Specified Visual is already a child of another Visual or the root of a CompositionTarget.
我不明白为什么,因为我得到了 8 张不同的图像,而且我不知道如何解决这个问题。
【问题讨论】:
-
有 XAML 来配合这个吗?您是否 100% 确定 LayoutRoot 是您期望的 Grid?
-
看起来有问题的图像是在您将其添加到 LayoutRoot 之前作为子图像添加的。你检查过
image.Parent是否为空吗? -
我发现问题。我回答。
-
我知道您已经找到了解决方案,但我添加了一个带有详细问题描述的答案。