确定Canvas中ContextMenu的位置?

时间:2012-03-08 16:07:56

标签: .net wpf wpf-controls

我有一个与Canvas相关联的ContextMenu

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

我点击了一个menuItem条目,并希望在这个地方插入一个控件(label,myLabel)。

我应该如何设置myLabel的坐标,以便它对应鼠标右键(ContextMenu实际&#34;位置&#34;)?..

1 个答案:

答案 0 :(得分:1)

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

Point location = myMenu.TranslatePoint(new Point(), myCanvas);

其中myMenu是ContextMenu:

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

以下是如何从MenuItem的Click事件的发件人获取ContextMenu:

FrameworkElement parent = sender as FrameworkElement;
while (parent != null && !(parent is ContextMenu))
{
    parent = parent.Parent as FrameworkElement;
}