更改Mapsui控件中的Panning按钮

时间:2018-09-10 15:15:23

标签: c# wpf mapsui

我正在使用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;

同样,这不是正确的语法,因为它会引发异常(不能为null)。

有人知道如何解决这些问题吗?

1 个答案:

答案 0 :(得分:0)

Mapsui在设计时并未考虑到这一点。如果将事件处理程序分配给WPF的鼠标按下事件,则可能在其中设置视口。另外,您需要取消常规鼠标事件。可以通过将MouseLeftButtonDown事件处理程序设置为null来实现。

PanMode不相关。这是为了限制用户可以平移/缩放的区域。