Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 更改Mapsui控件中的平移按钮_C#_Wpf_Mapsui - Fatal编程技术网

C# 更改Mapsui控件中的平移按钮

C# 更改Mapsui控件中的平移按钮,c#,wpf,mapsui,C#,Wpf,Mapsui,我将Mapsui用作C#应用程序中的映射控件。 默认情况下,通过使用鼠标左键拖动来启动平移。 我想把它改成鼠标中键 有人知道怎么做吗 Mapsui有一个名为PanMode的对象,您可以按如下方式创建一个实例,但是,我相信它只是一个枚举,用于在平移时使地图居中: Mapsui.UI.PanMode panMode = new PanMode(); 编辑: 根据“pauldendulk”的回答(感谢您的支持),我认为我需要这样做: 首先,捕捉中间的按钮单击并将其传递给mapsui left but

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

有人知道怎么做吗

Mapsui有一个名为PanMode的对象,您可以按如下方式创建一个实例,但是,我相信它只是一个枚举,用于在平移时使地图居中:

Mapsui.UI.PanMode panMode = new PanMode();
编辑:

根据“pauldendulk”的回答(感谢您的支持),我认为我需要这样做:

首先,捕捉中间的按钮单击并将其传递给mapsui left button方法。不幸的是,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)


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

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


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

感谢您的帮助。我一直在抓挠我的头试图实现你的建议,但我还没有运气(工作显示在编辑)。如果你有什么建议那就太好了。谢谢。不知道如何删除所有事件。也许这在添加您自己的事件处理程序时会有所帮助—不要调用鼠标按下事件(应该删除这些处理程序),而是使用另一种方法,如Map.NavigateTo。您使用哪个版本?