Как преобразовать расположение курсора ContextMenuEventArgs в координаты окна - PullRequest
1 голос
/ 07 октября 2010

Я пытаюсь отобразить контекстное меню, в котором пользователь щелкает мышью в приложении WPF.Я обработал событие OpenContextMenu, и у обработчика есть пара doubles, e.CursorLeft и e.CursorTop, которые являются координатами щелчка мыши относительно элемента управления, который был нажат (в данном случае DataGridCell).Если я отображаю контекстное меню, используя эти координаты, оно отображается относительно смещения окна приложения на величину курсора.

Как я могу преобразовать эти DataGridCell -относительные координаты курсора в пространство координат окна?

1 Ответ

2 голосов
/ 07 октября 2010

Вы можете использовать метод UIElement.TranslatePoint(Point, Visual) для преобразования координат из координатного пространства одного элемента управления в другое. Следующий код должен делать то, что вы хотите (не проверено!) :

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

Однако, если вы хотите отобразить только контекстное меню, вы также можете просто назначить свойство FrameworkElement.ContextMenu для элемента управления, который должен отображать контекстное меню. Таким образом, позиция будет позиционироваться у курсора мыши автоматически. Если у вас более сложный сценарий, вы все равно можете использовать описанный выше метод.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...