C# 如何将ContextMenuEventArgs光标位置转换为窗口坐标

C# 如何将ContextMenuEventArgs光标位置转换为窗口坐标,c#,wpf,C#,Wpf,我试图显示一个上下文菜单,用户在WPF应用程序中单击鼠标。我已经处理了OpenContextMenu事件,该处理程序有一对双倍体、e.CursorLeft和e.CursorTop,它们是鼠标单击相对于所单击控件的坐标(在本例中为DataGridCell)。如果我使用这些坐标显示关联菜单,它将显示为相对于应用程序窗口的光标偏移量 如何将那些DataGridCell相对光标坐标转换为窗口坐标空间?您可以使用该方法将坐标从一个控件的坐标空间转换为另一个控件的坐标空间。以下代码应该执行您想要的操作(未测

我试图显示一个上下文菜单,用户在WPF应用程序中单击鼠标。我已经处理了
OpenContextMenu
事件,该处理程序有一对
双倍体
e.CursorLeft
e.CursorTop
,它们是鼠标单击相对于所单击控件的坐标(在本例中为
DataGridCell
)。如果我使用这些坐标显示关联菜单,它将显示为相对于应用程序窗口的光标偏移量

如何将那些
DataGridCell
相对光标坐标转换为窗口坐标空间?

您可以使用该方法将坐标从一个控件的坐标空间转换为另一个控件的坐标空间。以下代码应该执行您想要的操作(未测试!):

但是,如果只想显示上下文菜单,还可以简单地为应显示上下文菜单的控件指定属性。这样,位置将自动定位在鼠标光标处。如果您有一个更复杂的场景,您仍然可以使用上面的方法

Point target =
    myDataGridCell.TranslatePoint(new Point(e.CursorLeft, e.CursorTop), Application.Current.MainWindow);