0

我在 C# 应用程序中使用 Mapsui 作为映射控件。默认情况下,通过使用鼠标左键拖动来启动平移。我想将其更改为鼠标中键。

有谁知道如何做到这一点?

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;

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

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

4

1 回答 1

0

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

PanMode 不相关。它旨在限制用户可以平移/缩放的区域。

于 2018-09-11T15:34:29.777 回答