Изменить кнопку панорамирования в 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 не имеет отношения. Он предназначен для ограничения области, в которой пользователи могут перемещаться / масштабироваться.