Я загрузил, установил и сослался на элемент управления Bing Maps в своем приложении Winforms:
... и я добавил в Form1.cs следующее:
using Microsoft.Maps.MapControl;
... но у меня до сих пор нет элемента управления Bing Maps на панели инструментов.
Я понимаю, что это элемент управления WPF, и я использую Winforms, но я понимаю, что элемент управления WPF можно использовать в приложении Winforms.
Мой вопрос: как я могу сделать элемент управления Bing Maps видимым на панели инструментов ИЛИ создать элемент управления Bing Maps в коде?
Вероятно, это не имеет значения, но Runtime-версия управления картой — 4.0.30319, версия = 1.0.0.0.
.NET Framework 4.7.2
Элементы управления WPF не будут добавлены в панель инструментов Windows Forms, вместо этого вам нужно создать пользовательский элемент управления WPF внутри вашего проекта Windows Forms и добавить к нему карту WPF, затем поместить экземпляр элемента управления ElementHost Windows Forms в вашу форму и сообщить хосту, чтобы покажи свой WPF UserControl.
Создайте приложение Windows Forms.
Установите пакет NuGet Microsoft.Maps.MapControl.WPF.
Добавьте в свой проект новый 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 Maps. Если у вас нет учетной записи Bing Maps, создайте учетную запись Bing Maps , а затем получите от нее ключ Bing Maps. В целях тестирования вы можете игнорировать ключ карты.
Создайте свой проект.
Поместите экземпляр элемента управления ElementHost в форму. Вы можете найти его в группе WPF Interoperability на панели инструментов.
На панели интеллектуальных действий (в правом верхнем углу элемента управления ElementHost) установите для размещенного содержимого значение UserControl1
и закрепите его в родительском контейнере.
Запустите ваше приложение.
Вот и все, карта появится в вашем приложении Windows Forms:
Больше информации:
Вы можете просмотреть следующие ссылки для получения дополнительной информации:
Отличный ответ, Реза! Единственное, что мне нужно было найти, это более подробную информацию о шаге 3, который включал «Добавить новый элемент> Пользовательский контроль WPF».
Спасибо за отзыв, я отредактировал шаг, чтобы сделать его немного понятнее.
Стоит отметить, что элемент управления картой WPF устарел и больше не обновляется. Я бы не рекомендовал использовать его для каких-либо новых разработок. Элемент управления картой UWP может быть размещен в приложениях Winforms с использованием XAML Islands — см.
@DuncanLawler это правда, он старый; однако одна из причин, по которой кто-то может по-прежнему хотеть использовать WPF Bing Maps, заключается в том, что он поддерживается во всех версиях Windows; но карта UWP доступна только в Windows 10. Я разместил ответ здесь для тех, кто ищет карту UWP в качестве опции :)
Какая версия .NET: .NET 5.0, .NET Core3.x, .NET Framework 4.X?