.net 确定画布中ContextMenu的位置?

.net 确定画布中ContextMenu的位置?,.net,wpf,wpf-controls,.net,Wpf,Wpf Controls,我有一个上下文菜单,与画布关联 <UserControl> <Grid myGrid> <Canvas myCanvas> <ContextMenu myMenu />... ... 我单击了一个menuItem条目,并希望在此处插入一个控件(label,myLabel) 我应该如何设置myLabel的坐标,以使其对应于鼠标右键单击(ContextMenu的实际“位置”)?…您可以使用ContextMenu的方法,例如

我有一个上下文菜单,与画布关联

<UserControl>
  <Grid myGrid>
    <Canvas myCanvas>
      <ContextMenu myMenu />...

...
我单击了一个menuItem条目,并希望在此处插入一个控件(label,myLabel)


我应该如何设置myLabel的坐标,以使其对应于鼠标右键单击(ContextMenu的实际“位置”)?…

您可以使用ContextMenu的方法,例如在MenuItem的Click事件处理程序中,如下所示:

Point location = myMenu.TranslatePoint(new Point(), myCanvas);
其中myMenu是ContextMenu:

<UserControl> 
    <Grid ...> 
        <Canvas ...> 
            <ContextMenu Name=myMenu />... 

单击中的发件人将是菜单项,而不是上下文菜单。。。因此,您不知道如何找到ContextMenu…您可以设置ContextMenu的
Name
属性。是的,但如果在某些情况下在同一画布上显示两个上下文菜单,会怎么样…)
FrameworkElement parent = sender as FrameworkElement;
while (parent != null && !(parent is ContextMenu))
{
    parent = parent.Parent as FrameworkElement;
}