Как добавить компонент Bing Maps в приложение C# Winforms?

Я загрузил, установил и сослался на элемент управления 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: .NET 5.0, .NET Core3.x, .NET Framework 4.X?

Reza Aghaei 25.12.2020 19:30

.NET Framework 4.7.2

B. Clay Shannon-B. Crow Raven 26.12.2020 10:08
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
2
2 211
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Элементы управления WPF не будут добавлены в панель инструментов Windows Forms, вместо этого вам нужно создать пользовательский элемент управления WPF внутри вашего проекта Windows Forms и добавить к нему карту WPF, затем поместить экземпляр элемента управления ElementHost Windows Forms в вашу форму и сообщить хосту, чтобы покажи свой WPF UserControl.

Пример — элемент управления WPF Bing Maps в Windows Forms

  1. Создайте приложение Windows Forms.

  2. Установите пакет NuGet Microsoft.Maps.MapControl.WPF.

  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 Maps. Если у вас нет учетной записи Bing Maps, создайте учетную запись Bing Maps , а затем получите от нее ключ Bing Maps. В целях тестирования вы можете игнорировать ключ карты.

  5. Создайте свой проект.

  6. Поместите экземпляр элемента управления ElementHost в форму. Вы можете найти его в группе WPF Interoperability на панели инструментов.

  7. На панели интеллектуальных действий (в правом верхнем углу элемента управления ElementHost) установите для размещенного содержимого значение UserControl1 и закрепите его в родительском контейнере.

  8. Запустите ваше приложение.

Вот и все, карта появится в вашем приложении Windows Forms:

Больше информации:

Вы можете просмотреть следующие ссылки для получения дополнительной информации:

Отличный ответ, Реза! Единственное, что мне нужно было найти, это более подробную информацию о шаге 3, который включал «Добавить новый элемент> Пользовательский контроль WPF».

B. Clay Shannon-B. Crow Raven 27.12.2020 15:25

Спасибо за отзыв, я отредактировал шаг, чтобы сделать его немного понятнее.

Reza Aghaei 27.12.2020 15:30

Стоит отметить, что элемент управления картой WPF устарел и больше не обновляется. Я бы не рекомендовал использовать его для каких-либо новых разработок. Элемент управления картой UWP может быть размещен в приложениях Winforms с использованием XAML Islands — см.

Duncan Lawler 04.01.2021 19:24

@DuncanLawler это правда, он старый; однако одна из причин, по которой кто-то может по-прежнему хотеть использовать WPF Bing Maps, заключается в том, что он поддерживается во всех версиях Windows; но карта UWP доступна только в Windows 10. Я разместил ответ здесь для тех, кто ищет карту UWP в качестве опции :)

Reza Aghaei 04.01.2021 19:40

Другие вопросы по теме