问题描述
我已经在我的 Winforms 应用程序中下载、安装并引用了 Bing 地图控件:
using Microsoft.Maps.MapControl;
...但我的工具箱中仍然没有 Bing 地图控件。
我意识到这是一个 WPF 控件,我使用的是 Winforms,但我的理解是 WPF 控件可以在 Winforms 应用程序中使用。
我的问题是:如何使 Bing 地图控件在工具箱中可见或在代码中创建 Bing 地图控件?
可能没有关系,但是地图控件的Runtime版本是4.0.30319,version = 1.0.0.0
解决方法
WPF 控件不会添加到 Windows 窗体工具箱中,而是您需要在 Windows 窗体项目中创建一个 WPF UserControl 并向其添加 WPF 映射,然后将 ElementHost Windows 窗体控件的实例放在窗体上并告诉显示 WPF UserControl 的主机。
示例 - Windows 窗体中的 WPF Bing 地图控件
-
创建 Windows 窗体应用程序。
-
安装 Microsoft.Maps.MapControl.WPF NuGet 包。
-
向您的项目添加一个新的 WPF UserControl:
右键单击项目→选择添加新项目→添加新的用户控件(WPF)(它位于WPF类别下)
-
将地图添加到您的 WPF 用户控件。基本上,您需要通过向用户控件添加以下属性来将地图程序集添加到控件中:
xmlns:m="clr-namespace:Microsoft.Maps.MapControl.WPF;assembly=Microsoft.Maps.MapControl.WPF"
并将地图元素添加到控件中:
<Grid> <m:Map/> </Grid>
这是您的用户控件的完整代码。 (确保使用正确的命名空间):
<UserControl x:Class="YOURNAMESPACE.UserControl1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:m="clr-namespace:Microsoft.Maps.MapControl.WPF;assembly=Microsoft.Maps.MapControl.WPF"> <Grid> <m:Map CredentialsProvider="YOUR MAP KEY" x:Name="myMap" /> </Grid> </UserControl >
• 注意:您需要一个 Bing 地图密钥。如果您没有 Bing 地图帐户,请create a Bing Maps account,然后从它get a Bing Maps key。出于测试目的,您可以忽略映射键。
-
构建您的项目。
-
在表单上放置一个 ElementHost 控件的实例。您可以在工具箱中的 WPF 互操作性组下找到它。
-
从智能操作面板(在 ElementHost 控件的右上角),将托管内容设置为
UserControl1
并将其停靠到父容器。 -
运行您的应用程序。
好了,地图将出现在您的 Windows 窗体应用程序中:
更多信息:
您可能需要查看以下链接以获取更多信息: