我在基于 Canvas 的 WPF 中制作了一个非常漂亮的 NodeGraph,现在我正在通过右键单击菜单添加漂亮的功能。
这些菜单是上下文相关的。这意味着右键单击图表的背景将显示图表上下文菜单,而右键单击图表中的节点将显示节点上下文菜单,或者如果节点有任何带菜单的子控件,则显示这些菜单。
我已经将这个特定问题推迟了一段时间,但不能再忽略它了。如标题所述:当我右键单击一个节点时,将显示图形的上下文菜单。如果我禁用图形的上下文菜单,节点会显示得很好。
这让我相信这是父控件在打开上下文菜单时优先的问题。我已经尝试覆盖父控件和子控件中的鼠标事件并将它们设置为已处理,但我就是想不通!
谁能帮我解决这个非常烦人的问题?
最佳答案
旧但以防万一有人登陆这里,我能够使用以下技巧解决这个问题。 (在我的例子中,父控件是一个 Grid
,子控件是一个 Path
,它们都有自己的上下文菜单):
我。不要将 ContextMenu
分配给父控件。而是将其作为资源添加到其 Resources
部分。
二。处理父级的 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
直接分配给您的子控件。
关于c# - 父控件的 WPF ContextMenu 在具有自己的 ContextMenu 的子控件上打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34780046/