0
我有了(該PAGE_LOADED事件中)置於其上幾個圖像一個地圖WP8刪除圖像
MapLayer pinLayer = new MapLayer();
MapOverlay pin50 = new MapOverlay();
pin50.GeoCoordinate = new GeoCoordinate(49.42563670946435, -0.44644108276367537);
Canvas myCanvas50 = new Canvas();
// The image is defined globally
pin50.PositionOrigin = new Point(0.5, 0.5);
image50.Source = new BitmapImage(new Uri("Images/Destroyer.png", UriKind.Relative));
image50.Opacity = 1;
Point point50 = new Point(1.0, 1.0);
Canvas.SetLeft(image50, point50.X);
Canvas.SetTop(image50, point50.Y);
myCanvas50.Children.Add(image50); // <=== ERROR OCCURS HERE
// Making an event handler for the image so that we can 'tap' on it
image50.DoubleTap += image50_DoubleTap;
pin50.Content = myCanvas50;
pinLayer50.Add(pin50);
map_J.Layers.Add(pinLayer);
它工作正常的所有圖像。然而,當我點擊一張圖片時,它會導航到一個新頁面,並給出對被點擊圖片的描述。 問題是,當用戶導航回到這個地圖(通過直觀地按下硬件BACK BUTTON),應用程序崩潰,因爲錯誤「元素已經是另一個元素的孩子」。 我猜測,頁面仍然加載,所以當它被導航回它得到'重新加載',所以不能將相同的圖像添加到相同的畫布等。
我試着添加以下內容來清除從地圖的所有信息從該頁面就離開了,但它並不能幫助: 保護覆蓋無效OnNavigatedFrom(NavigationEventArgs E) { base.OnNavigatedFrom(E);
var toRemove = new List<MapLayer>();
foreach (MapLayer lyr in map_J.Layers)
{
toRemove.Add(lyr);
}
// now do the actual removal
foreach (var child in toRemove)
{
map_J.Layers.Remove(child);
}
}
任何想法?有沒有更好的方法來處理地圖/元素的重新加載?
不幸的是,同樣的錯誤仍然出現在導航返回頁面。就好像該頁面在向前導航時存儲在某個緩衝區中,並且正在嘗試在返回時將該圖像添加到另一個Canvas中...並且它無法執行此操作。 –