Вы можете использовать метод ContextMenu TranslatePoint , например, в обработчике события Click MenuItem, например:
Point location = myMenu.TranslatePoint(new Point(), myCanvas);
, где myMenu - ContextMenu:
<UserControl>
<Grid ...>
<Canvas ...>
<ContextMenu Name=myMenu />...
Вот как вы можете получить ContextMenu от отправителя события Click MenuItem:
FrameworkElement parent = sender as FrameworkElement;
while (parent != null && !(parent is ContextMenu))
{
parent = parent.Parent as FrameworkElement;
}