我想在图像网格中移动图像(我的英雄)。当我移除走廊时,移动并将英雄图像放在那里,代码执行正常(英雄是网格中唯一的唯一图像)。但是当我将一个走廊图像放在英雄以前的位置时,我收到了上面提到的错误。据我所知,这是因为我在网格中有50个其他走廊图像作为子项,名称为“corridorImg”。
int newTileIndex = Image_Grid2.Children.IndexOf(heroImg) + map.mapWidth - 1;
int currentTileIndex = Image_Grid2.Children.IndexOf(heroImg);
Image_Grid2.Children.RemoveAt(currentTileIndex);
Image_Grid2.Children.RemoveAt(newTileIndex);
// Tried to solve issue by creating new Image by using clone of the corridor Image, but same exception
Image oldTileImage = new Image();
oldTileImage = corridorImg;
Image_Grid2.Children.Insert(currentTileIndex, oldTileImage);
Image_Grid2.Children.Insert(newTileIndex, heroImg);
答案 0 :(得分:0)
我同意@HighCore你应该使用MVVM。
你的具体问题是你实际上没有克隆Image,你刚刚创建了一个新的,然后覆盖了它所分配的变量。在倒数第二行中,您将重新插入原始的corridorImg,您只需将其称为oldTileImage。要真正克隆Image,您需要复制其属性。如果您正在使用图片来源,那将是:
Image corridorImgClone = new Image();
corridorImgClone.Source = corridorImg.Source;