【问题标题】:WP8 Deleting Images from Map (Error when navigating back to page)WP8 从地图中删除图像(导航回页面时出错)
【发布时间】:2014-04-01 20:30:11
【问题描述】:

我有一张地图,上面放了几张图片(在 page_loaded 事件中)

        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);
        }


    }

有什么想法吗?有没有更好的方法来处理地图/元素的重新加载?

【问题讨论】:

    标签: windows-phone-8 here-api


    【解决方案1】:

    我建议每次用户离开页面时清除地图图层。

    将此代码添加到视图的 XAML 代码中的主标记:

    <phone:PhoneApplicationPage 
         ...
         Unloaded="PhoneApplicationPage_Unloaded" >
    

    后面还有这个事件代码:

    private void PhoneApplicationPage_Unloaded(object sender, RoutedEventArgs e)
    {
        map_J.Layers.Clear();
    }
    

    【讨论】:

    • 不幸的是,在导航回页面时仍然会出现同样的错误。就好像页面在向前导航时存储在某个缓冲区中,并且在向后导航时试图将图像添加到另一个画布......它做不到。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-12
    • 2016-03-09
    • 2021-12-06
    相关资源
    最近更新 更多