2012-03-08 97 views
0

我有一个文本菜单,关联到画布确定Canvas中ContextMenu的位置?

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

我一个菜单项条目点击,并想在这个地方插入控件(标签,myLabel)。

我应该如何设置myLabel的坐标,以便它对应于鼠标右击(在文本菜单实际的“位置”)?..

回答

1

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

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

其中MYMENU是文本菜单:

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

这里是你如何从一个菜单项的Click事件的发送者获取文本菜单:

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

发件人在点击将是MenuItem,而不是ContextMenu ...所以不知道如何找到ContextMenu ... – serhio 2012-03-08 17:32:37

+0

您可以设置ContextMenu的Name属性。 – Clemens 2012-03-08 19:27:55

+0

是的,但是如果我在同一个Canvas上有两个上下文菜单,在某些条件下出现该怎么办......) – serhio 2012-03-09 08:15:08