繁体   English   中英

父控件的 WPF ContextMenu 在具有自己的 ContextMenu 的子控件上打开

[英]WPF ContextMenu of parent control opens on child control with own ContextMenu

我在基于 Canvas 的 WPF 中制作了一个非常漂亮的 NodeGraph,现在我正在通过右键单击菜单添加漂亮的功能。

这些菜单是上下文相关的。 意思是右键单击图形的背景将显示图形 ContextMenu,而右键单击图形中的节点将显示节点 ContextMenu,或者如果该节点具有任何带有菜单的子控件,则这些。

我已经将这个特定问题推迟了一段时间,但不能再忽视它。 如标题所述:当我右键单击一个节点时,将显示图表的上下文菜单。 如果我禁用图形的上下文菜单,节点会显示得很好。

这让我相信这是父控件优先打开上下文菜单的问题。 我已经尝试覆盖父控件和子控件中的鼠标事件并将它们设置为已处理,但我无法弄清楚!

任何人都可以帮助我摆脱这个非常烦人的问题吗?

旧但以防万一有人降落在这里,我能够通过使用以下技巧来解决这个问题。 (在我的情况下,父控件是Grid ,子控件是Path ,两者都有自己的上下文菜单):

一世。 不要将ContextMenu分配给父控件。 而是将其作为资源添加到其Resources部分。

ii. 处理父级的MouseRightButtonDown事件并将以下代码放入其处理程序中:

if (!(e.OriginalSource is Path)) //Or whatever is the type of child control
{
  var cmnu = this.FindResource("ParentContextMenu") as ContextMenu;
  cmnu.IsOpen = true;
}

三、 ContextMenu直接分配给您的子控件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM