2010-10-07 80 views
1

我试图显示用户在WPF应用程序中单击鼠标的上下文菜单。我处理了OpenContextMenu事件,处理程序有一对doubles,e.CursorLefte.CursorTop,它们是相对于单击的控件(在本例中为DataGridCell)的鼠标点击的坐标。如果我使用这些坐标显示上下文菜单,它将显示与应用程序窗口相对于光标量的偏移量。如何将ContextMenuEventArgs光标位置转换为窗口坐标

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

回答

2

您可以使用UIElement.TranslatePoint(Point, Visual)方法将坐标从一个控件的坐标空间转换为另一个控件的坐标空间。下面的代码应该做你想要什么(未测试!):

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

不过,如果你只是想显示上下文菜单,你也可以简单地分配FrameworkElement.ContextMenu属性应该显示控制上下文菜单。这样,该位置将自动定位在鼠标光标处。如果你有更复杂的场景,你仍然可以使用上面的方法。

相关问题