.net WP8.1/Win10 UWP:在Visual Studio Designer中找不到MapControl的命名空间

15
编辑:在使用 MapControl 的 Win 10 UWP 应用程序(VS2015,Win10)中也出现了下面描述的问题。
我在 Windows Phone 8.1(通用应用程序)应用程序中使用 MapControl 时遇到了一个奇怪的问题。将控件添加到页面后,Visual Studio 会显示“名称“MapControl”在命名空间“using:Windows.UI.Xaml.Controls.Maps”中不存在。”构建应用程序可以工作,我可以部署它到手机上,并且地图被显示出来,一切都很好 - 但是我不能再使用设计器来编辑这个页面,因为它声称有错误。
该问题最初发生在一个更大的项目中,该项目最初在 Windows 8.1 上的 VS2013(更新4)中启动。我的第一个想法是我的 VS 安装有点损坏。但即使在新安装了 Windows 10(10240)和 VS2015 RTM 的干净环境下,问题仍然存在。我复制问题的步骤非常简单:
创建一个模板为“空白应用程序(通用 Windows 8.1)”的新项目 打开 WindowsPhone 子项目的 MainPage.xaml 在工具箱中双击 MapControl 注意,MapControl 被添加到 xaml 中的 Grid 中,并在并排设计视图中显示。一切似乎没问题。 现在,我可以通过点击工具箱添加更多控件到页面上。我可以在设计器中用鼠标修改页面上的控件(例如重新排列它们),并通过属性窗格更改它们的属性。一切还正常。 但是当我关闭并重新打开该页(或整个项目)时,在设计器中开始直接使用键盘编辑 xaml 时,设计器就会失败并声称上述错误。
问题是什么?如何使 Visual Studio 设计器能够再次处理带有 MapControl 的页面?起初我认为是 VS2013 中的一个错误 - 但是这么容易被重现,在 VS2015 中没有解决,而且在互联网上也找不到有关它的信息?我做错了什么?

2
即使在 Windows 10、VS2015 RC 上使用 UWP 项目,我仍然遇到了相同的错误。 - Nghia Nguyen
相同的错误,但似乎不影响将应用程序部署到商店。 - gavi
1
不,它不会影响部署。但是当地图是您应用程序中的中心UI元素时,您必须在没有可视化设计师的情况下开发整个应用程序,这使得开发变得更加困难。 - Torben Schramme
3个回答

1

在Visual Studio Tools for Universal Windows Apps 1.0上有一个错误导致地图出现问题,安装此更新应该可以解决这个问题 Update

使用地图SDK的正确步骤

Windows 8.1

  1. 转到“工具” -> “扩展和更新” -> 安装Bing Map SDK。
  2. 右键单击项目 -> 添加引用 -> Windows -> 扩展 -> Bing maps
  3. 将配置设置为x86(配置属性 -> 配置)
  4. 使用xmlns:maps =“using:Bing.Maps”将地图引用添加到您的页面中
  5. 将此行添加到您的xaml中<maps:Map />

现在你可以开始了

Windows Phone和Windows 10 UAP

在您的xaml中添加此引用

xmlns:maps="using:Windows.UI.Xaml.Controls.Maps"

然后将这行代码添加到你的 XAML 中。
<maps:MapControl />

你的程序只是针对x86 Windows 8.1的解决方法,似乎在我提出问题的wp8.1或wp10通用Windows平台上无法工作。Bing Maps SDK扩展仅适用于Windows 8.1商店应用程序。而且它似乎是一个不同的API。我想知道如何使此API工作:https://msdn.microsoft.com/en-us/library/windows/apps/xaml/windows.ui.xaml.controls.maps.mapcontrol.aspx或https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/MapControl - Torben Schramme
在 Windows 8.1 的通用应用程序中,您有一个 WP8.1 项目和一个 Windows 8.1 项目。我编写的过程说明了如何在两个不同的项目中使用地图,因为 SDK 不同,您需要为每个项目都准备两个不同的视图来显示地图。如果您的项目的目标是 Win10 UAP,则只需要我的答案中的 Windows Phone 部分,您不需要 SDK,因为 SDK 已经包含在内。 - frenk91
请查看我提供的截图。你建议的Win10的两行代码正是我写的。问题不在于MapControl根本找不到。它被找到了,可以通过工具箱添加,设计师中也可见,并且在运行时它也能工作。但是:它只能在第一次手动编辑XAML文件之前工作。之后,设计师似乎出现了问题,并声称找不到命名空间。此时它仍然在运行时工作,但在设计师中不再工作。而且似乎我不是唯一遇到这个问题的人,所以我想知道是否有解决方法/修复方法。 - Torben Schramme
1
Visual Studio存在一个错误,导致地图出现问题,安装此更新应该可以解决问题。请访问以下链接获取更新和安装说明:https://social.msdn.microsoft.com/Forums/en-US/e9df01f6-1474-4a4e-98fc-2567591c764f/update-11-release-notes-and-installation-instructions?forum=Win10SDKToolsIssues - frenk91
确实,这个更新解决了问题。你能再编辑一下你的答案,把相关信息放在开头吗?也许再加上一些更详细的信息?正如我们所讨论的,你最初提供的信息并不是我所要求的。但因为你比Justin XL先发布了链接,如果你能稍微改进一下你的答案,我会给你的答案打上绿色勾号。 - Torben Schramme
抱歉,我没有看到你更新的答案,否则我就不会费心创建一个新的了。 - Justin XL

-1

很遗憾,这并不能解决我的问题。现在在使用MapControl时,在Win 10 UWP项目中出现了相同的问题。您提供的链接指向一个被标记为“重复”的错误,但没有提供可以找到重复票的信息。也没有提供何时会修复此问题的信息。非常令人沮丧... - Torben Schramme

-1

确保正确引用地图库

xmlns:Maps="clr-namespace:Microsoft.Phone.Maps.Controls;assembly=Microsoft.Phone.Maps"

不要使用

xmlns:Maps="using:Microsoft.Phone.Maps.Controls;assembly=Microsoft.Phone.Maps"

我在谈论针对wp8.1/win8.1或win10的.net通用应用程序。我询问的是Windows.UI.Xaml.Controls.Maps命名空间,而不是Microsoft.Phone.Maps.Controls。请仔细阅读我的问题。如果我要处理wp8.1,则使用语法将无法工作,但这将导致不同的异常。有关更多信息,请参见此处:https://dev59.com/QXHYa4cB1Zd3GeqPP8yi - Torben Schramme

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接