WPF, MVVM — Создание приложения с интерактивной картой (.Net 6)

map application C#

Данная статья это конспект из видео в котором создают интерактивную карту в WPF

Для реализации мы будем использовать следующие технологии:

  • Prism 8 MVVM framework, и DryLoc контейнер для dependency injection
  • .NET Core 6.0, WPF (Windows Presentation Foundation).
Проект на GitHub

Создание проекта можно поделить на следующие этапы:

 

Создание и настройка главного окна нашего приложения

Проект был создан с помощью Prism Template Pack. Этот пакет шаблонов содержит коллекцию сниппетов, шаблонов элементов и шаблонов проектов которые можно использовать при создании WPF и Xamarin приложений с помощью Prism.

Prism Template Pack

После установки этого пакета шаблонов создаем проект «Prism blank app(WPF)» и называем его MapPrism.

Добавим новое view(RuMap.xaml) и автоматически создается файл RuMapViewModel в папке ViewModels. Для отображения этого view нужно его зарегистрировать в файле MainWindows.cs

WPF, MVVM - Создание приложения с интерактивной картой (.Net 6)

Загрузка и конвертирование SVG карты в xaml файл(с помощью программы Inkscape)

Скачать программу можно ниже по ссылке

Скачать Inkscape

Необходимо скачать нужную нам карты с сайта. В нашем случае это карта России

Скачать карту

Карту можно выбрать любую, но в формате SVG

WPF, MVVM - Создание приложения с интерактивной картой (.Net 6)

Открываем программу Inkscape и выбираем скачанный нами файл svg

WPF, MVVM - Создание приложения с интерактивной картой (.Net 6)

На данной карте можно менять названия регионов добавлять дополнительные настройки

WPF, MVVM - Создание приложения с интерактивной картой (.Net 6)

После внесения изменений сохраняем документ как «Microsoft XAML(*.xaml)»

WPF, MVVM - Создание приложения с интерактивной картой (.Net 6)WPF, MVVM - Создание приложения с интерактивной картой (.Net 6)

 

Созданный таким образом файл можно добавлять в наш ранее созданный проект в RuMap.xaml.

Настройка триггера для изменения цвета при наведении курсора мыши

Откроем файл RuMap.xaml и добавим следующий код:

Этот код реализует триггер, который при наведении мыши на область карты подсвечивает её красным цветом.

Обработать щелчок мыши, чтобы показать выделенную область

Для обработки нажатия мышью на область мы будем использовать xmlns:i="http://schemas.microsoft.com/xaml/behaviors"

WPF, MVVM - Создание приложения с интерактивной картой (.Net 6)

Таким образом, после клика мыши на объект будет вызываться команда LeftMouseButtonDown и передавать во ViewModel выделенный объект.

Добавим в файл RuMapViewModel свойство SelectedPath(propp) и команду LeftMouseButtonDown(cmdg)

 

Прочитать данные из CSV файла.

Создадим метод, который будет подгружать данные о наших регионах. В моем случае это region.csv

скачать Region.csv

И метод который преобразующий массив в строку

И нужно придумать как приложение будет подключаться к этим данным

Добавление панели свойств для карты

В файле RuMap.xaml добавим поле для отображении информации о регионе

Во ViewModel добавим свойство RegionData и в метод ExecuteLeftMouseButtonDown добавим метод BuildCountryInfo

Таким образом у нас получилась интерактивная карта

WPF, MVVM - Создание приложения с интерактивной картой (.Net 6)

Добавить комментарий

  1. Константин

    Спасибо, единственное не понятно содержимое region.csv

    Ответить
    1. region.csv скачал с https://github.com/hflabs/region/blob/master/region.csv

      Ответить