C# 如何使用ViewportPointToLocation在鼠标单击时检索坐标?

C# 如何使用ViewportPointToLocation在鼠标单击时检索坐标?,c#,bing-maps,C#,Bing Maps,我正在使用Bing map WPF control SDK尝试检索坐标并打印它们 我已经使用与按下箭头相关联的EventHandler检索了当前LocationRect中心的坐标 我尝试在鼠标单击事件处理程序中使用相同的概念,但没有成功,首先我使用+=符号注册了事件,如下所示: public MainWindow() { InitializeComponent(); MainMap.Mode = new AerialMode(tru

我正在使用Bing map WPF control SDK尝试检索坐标并打印它们

我已经使用与按下箭头相关联的EventHandler检索了当前LocationRect中心的坐标 我尝试在鼠标单击事件处理程序中使用相同的概念,但没有成功,首先我使用+=符号注册了事件,如下所示:

public MainWindow()
        {
            InitializeComponent();
            MainMap.Mode = new AerialMode(true);
            MainMap.Focus();
            MainMap.Culture = "ar-sa";

            MainMap.MouseDoubleClick += new MouseButtonEventHandler(MapWithPushpins_MouseDoubleClick);
        }

private void MapWithPushpins_MouseDoubleClick(object sender,  MouseButtonEventArgs e)
    {
        e.Handled = true;

        Point mousePosition = e.GetPosition(this);
        Location pinLocation = MainMap.ViewportPointToLocation(mousePosition);

        Pushpin pin = new Pushpin();
        pin.Location = pinLocation;


        Coordinates.Text = pinLocation.Longitude.ToString();
        MainMap.Children.Add(pin);

    }   
下面是
XAML
文件:

<Window x:Class="Ornina.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:m="clr-namespace:Microsoft.Maps.MapControl.WPF;assembly=Microsoft.Maps.MapControl.WPF"
        xmlns:local="clr-namespace:Ornina"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <Grid>
        <Grid VerticalAlignment="Top" >
            <m:Map CredentialsProvider="AqCitpgSjIz_Sxd6AyI9Zm1rs1uRSG_G3Y7ebfok69ufB8W8uRdUtvheaRbz_10t" x:Name="MainMap" Center="36,38" ZoomLevel="16" Mode="AerialWithLabels" HorizontalAlignment="Center" VerticalAlignment="Top" Height="300" Width="500">
            </m:Map>
        </Grid>
        <TextBlock x:Name="Coordinates">Coordinations</TextBlock>
    </Grid>
</Window>

协调

程序没有任何响应,没有异常,没有错误

您的文本块位于地图前面,因此地图不会收到MouseDoubleClick事件

您可以将文本块更改为:

  <TextBlock x:Name="Coordinates"
             HorizontalAlignment="Left"
             VerticalAlignment="Top"
             Text="Coordinations" />

所以它只在左上角,不在整个地图的前面


或者,您可以将其完全移动到地图之外的其他网格行或列中。

您是否设置了断点以查看您是否使用了代码?您注册了Click事件吗?@jdweng当然,我已经在MainWindow上使用+=符号注册了Click事件。事件处理程序是否未被调用?或者结果不是您所期望的?@HHLV当我双击地图上的任何位置时,都不会发生任何事情,坐标也不会打印出来,我如何确保事件被调用?我已经按照jdweng的建议注册了ITA,您可以设置一个断点来查看您的方法是否被调用。将断点设置为第一行
e.Handled=true并在调试中运行。无论你是谁,我都深深地爱着你,非常感谢