Изменить кнопку панорамирования в Mapsui Control

Я использую Mapsui как элемент управления отображением в приложении C#. По умолчанию панорамирование инициируется перетаскиванием с помощью левой кнопки мыши. Я хочу изменить это на среднюю кнопку мыши.

Кто-нибудь знает как это сделать?

В Mapsui есть объект PanMode, вы можете создать экземпляр следующим образом, однако я считаю, что это просто перечисление для центрирования карты при панорамировании:

Mapsui.UI.PanMode panMode = new PanMode();

РЕДАКТИРОВАТЬ:

Исходя из того, что ответил 'pauldendulk' (спасибо за вашу поддержку), я думаю, что мне нужно сделать что-то вроде этого:

Сначала поймайте щелчок средней кнопкой и перенесите его на метод левой кнопки mapsui. К сожалению, MapControlMouseLeftButtonDown() является закрытым методом, поэтому он не будет работать.

MyMapControl.MouseDown += MapControlOnMouseButtonDown;

private void MapControlOnMouseButtonDown(object sender, MouseButtonEventArgs e)
    {
        if(e.ChangedButton == MouseButton.Middle)
        {
            Mapsui.UI.Wpf.MapControl.MapControlMouseLeftButtonDown(sender, e);
        }

    }

Во-вторых, мне нужно остановить исходное нажатие левой кнопки от стрельбы.

MyMapControl.MouseLeftButtonDown += null;

Опять же, это неправильный синтаксис, поскольку он генерирует исключение (не может быть нулевым).

Кто-нибудь знает, как решить эти проблемы?

1 ответ

Mapsui не был разработан с учетом этого. Возможно, это возможно, если вы назначите обработчик события для нажатия мыши в WPF, установив там область просмотра. Также вам нужно подавить обычное событие мыши. Возможно, это возможно, установив для обработчика события MouseLeftButtonDown значение null.

PanMode не имеет отношения. Он предназначен для ограничения области, в которой пользователи могут перемещаться / масштабироваться.

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