我想将列表中的所有图像设置为网格。但我有与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? – WasGoodDone
在添加到LayoutRoot之前,似乎有问题的图像是作为小孩添加的。你有没有检查'image.Parent'是否为空? – Domysee
我发现问题。我回答说。 –