2013-03-05 11 views
0

我想將圖片(我的英雄)移動到圖片網格中。當我移走走廊時,它移動到並放置英雄圖像,代碼執行得很好(英雄是網格中唯一唯一的圖像)。但是,當我在英雄的前一個位置放置走廊圖像時,我收到上述錯誤。我明白,這是因爲我有50個其他走廊圖像作爲名爲「corridorImg」的網格中的兒童。是否有可能繞過「指定的視覺已經是另一個視覺的孩子或CompositionTarget的根」異常?

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

記得我告訴過你你應該使用MVVM嗎?那麼你將操縱簡單的類和屬性,而不必與Visual Tree的複雜性作鬥爭...... – 2013-03-05 17:37:15

+0

這是什麼平臺? WPF?的WinForms? Silverlight的? – jrummell 2013-03-05 18:08:46

+0

@ jrummell:平臺是WPF – Frapie 2013-03-05 18:24:39

回答

0

我同意@HighCore你應該使用MVVM。

雖然你的具體問題是你沒有實際克隆圖像,你只是做了一個新的圖像,然後覆蓋它分配給它的變量。在倒數第二行中,您將重新插入原始走廊圖像,您只需將其稱爲oldTileImage即可。要真正克隆圖像,您需要複製其屬性。如果你正在使用圖像源,那看起來像:

Image corridorImgClone = new Image(); 
corridorImgClone.Source = corridorImg.Source; 
相關問題