Изменить кнопку панорамирования в Mapsui Control - PullRequest
0 голосов
/ 10 сентября 2018

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

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

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

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

EDIT:

Исходя из того, что ответил '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 Ответ

0 голосов
/ 11 сентября 2018

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

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

...