【问题标题】:How can I add a Bing Maps Component to my C# Winforms app?如何将 Bing 地图组件添加到我的 C# Winforms 应用程序?
【发布时间】:2020-12-25 17:07:26
【问题描述】:

我已在我的 Winforms 应用程序中下载、安装和引用 Bing 地图控件:

...我在 Form1.cs 中添加了以下内容:

using Microsoft.Maps.MapControl;

...但我的工具箱中仍然没有 Bing 地图控件。

我意识到这是一个 WPF 控件,并且我正在使用 Winforms,但我的理解是 WPF 控件可以在 Winforms 应用程序中使用。

我的问题是:如何使 Bing 地图控件在工具箱中可见或在代码中创建 Bing 地图控件?

可能没关系,但是地图控件的Runtime版本是4.0.30319,version = 1.0.0.0

【问题讨论】:

  • .NET 版本:.NET 5.0、.NET Core3.x、.NET Framework 4.X?
  • .NET Framework 4.7.2

标签: c# .net wpf winforms bing-maps


【解决方案1】:

WPF 控件不会添加到 Windows 窗体工具箱中,而是您需要在 Windows 窗体项目中创建一个 WPF UserControl 并向其中添加一个 WPF 映射,然后将 ElementHost Windows 窗体控件的实例拖放到您的窗体上并告诉显示您的 WPF UserControl 的主机。

示例 - Windows 窗体中的 WPF Bing 地图控件

  1. 创建一个 Windows 窗体应用程序。

  2. 安装Microsoft.Maps.MapControl.WPF NuGet 包。

  3. 在你的项目中添加一个新的WPF UserControl

    右键单击项目→选择添加新项目→添加新的用户控件(WPF)(位于WPF类别下)

  4. 将地图添加到您的 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 accountget a Bing Maps key。出于测试目的,您可以忽略 map 键。

  5. 构建您的项目。

  6. 在您的表单上放置一个 ElementHost 控件的实例。您可以在工具箱的 WPF 互操作性组下找到它。

  7. 在智能操作面板(位于 ElementHost 控件的右上角)中,将托管内容设置为 UserControl1 并将其停靠到父容器。

  8. 运行您的应用程序。

好了,地图将出现在您的 Windows 窗体应用程序中:

更多信息:

您可能需要查看以下链接以获取更多信息:

【讨论】:

  • 很好的答案,雷扎!我唯一需要查找的是第 3 步的更多细节,其中涉及“添加新项目 > WPF 用户控件”
  • 感谢您的反馈,我编辑了步骤以使其更清晰。
  • 值得注意的是,WPF 地图控件是旧的,不再更新。我不建议将它用于任何新的开发。 UWP 地图控件可以托管在使用 XAML 岛的 Winforms 应用程序中 - 请参阅 docs.microsoft.com/en-us/windows/apps/desktop/modernize/…
  • @DuncanLawler 没错,它已经过时了;但是,有人可能仍想使用 WPF Bing Maps 的原因之一是因为它在所有 Windows 版本上都受支持;但 UWP 地图仅在 Windows 10 上可用。我为那些希望将 UWP 地图作为选项的人发布了answer here :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-10
  • 2019-05-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多