【问题标题】:C# Invalid Uri at Windows phone8. image Uri System.InvalidOperationExeption.Windows phone 8 中的 C# 无效 Uri。图像 Uri System.InvalidOperationException。
【发布时间】:2014-09-22 12:49:37
【问题描述】:

图像文件位于我的应用程序的资产文件夹中。我已经使用了完整的 uri,但没有成功。我尝试将其动态添加到我的地图中。其余代码有效(经过测试),当它尝试从 uri 获取图像时出现此错误。

Image pin = new Image();
 var uri = new Uri(@"/Assets/shop.png", UriKind.RelativeOrAbsolute);
    pin.Source = new BitmapImage(uri);
 pin.Tag = new GeoCoordinate(coordinate.Latitude, coordinate.Longitude);
        pin.MouseLeftButtonUp += new MouseButtonEventHandler(Marker_Click);
        pin.Height = 20;
        pin.Width = 20;
        pin.Opacity = 50;
        // Create a MapOverlay and add marker.
        MapOverlay overlay = new MapOverlay();
        overlay.Content = pin;
        overlay.GeoCoordinate = new GeoCoordinate(coordinate.Latitude, coordinate.Longitude);
        overlay.PositionOrigin = new Point(0.0, 1.0);
        mapLayer.Add(overlay);

【问题讨论】:

  • 你试过 UriKind.Relative 了吗?
  • 是的。也尝试了使用完整路径 uri 的相对、绝对路径。
  • 奇怪,在我的应用程序中有类似的代码,它可以工作。也许尝试“Assets/shop.png”并检查您的图像是否已将构建操作设置为内容(右键单击 -> 属性)
  • 构建操作设置为内容。试过了,但仍然有同样的例外。它应该可以工作,显然我做错了什么,但不知道是什么。
  • 将图像属性中的“复制到输出”设置更改为“如果较新”或“始终”

标签: c# image windows-phone-8 windows-phone maps


【解决方案1】:

试试这个:

Image imgPushpin = new Image();
                        imgPushpin.Height = 60;
                        imgPushpin.Width = 41;
                        imgPushpin.Source = new BitmapImage(new Uri("/Assets/Images/PropertyLocator/imgPropertyPoint.png", UriKind.Relative));
                        imgPushpin.Tag = "Location";
                        imgPushpin.MouseLeftButtonUp += imgPushpinMouseLeftButtonUp;
                        // Create a MapOverlay and add marker
                        MapOverlay overlay = new MapOverlay();
                        overlay.Content = imgPushpin;
                        overlay.GeoCoordinate = new GeoCoordinate(listView[j].latitude, listView[j].longnitude);
                        overlay.PositionOrigin = new Point(0.5, 1);
                        locationLayer = new MapLayer();
                        locationLayer.Add(overlay);
                        mapPropertyLocator.Layers.Add(locationLayer);
                        mapPropertyLocator.ZoomLevel = 11.5;

【讨论】:

  • 完美运行,谢谢!如果问题不大,你介意告诉我我做错了什么吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多