2010-10-07 78 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屬性應該顯示控制上下文菜單。這樣,該位置將自動定位在鼠標光標處。如果你有更復雜的場景,你仍然可以使用上面的方法。

相關問題