0

我想在图像网格中移动图像(我的英雄)。当我删除它移动到的走廊并将英雄图像放置在那里时,代码执行得很好(英雄是网格中唯一的唯一图像)。但是当我在英雄之前的位置放置一个走廊图像时,我收到了上面提到的错误。我知道这是因为我喜欢 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);
4

1 回答 1

0

我同意@HighCore,您应该为此使用 MVVM。

不过,您的具体问题是您实际上并没有克隆图像,您只是制作了一个新图像,然后覆盖了分配给它的变量。在倒数第二行中,您重新插入了原始的走廊Img,您只是将其称为oldTileImage。要真正克隆图像,您需要将其属性复制过来。如果您使用的是图像源,则如下所示:

Image corridorImgClone = new Image();
corridorImgClone.Source = corridorImg.Source;
于 2013-03-05T18:06:20.013 回答