parent 控件的 WPF ContextMenu 在具有自己的 ContextMenu 的 child 控件上打开
WPF ContextMenu of parent control opens on child control with own ContextMenu
我基于 Canvas 在 WPF 中制作了一个非常漂亮的 NodeGraph,现在我正在通过 right-click 菜单添加漂亮的功能。
这些菜单是上下文相关的。意思是图形背景上的 right-click 将显示图形上下文菜单,而在图形中 right-click 节点将显示节点上下文菜单,或者如果节点有任何 child-controls 菜单, 那些.
我已经将这个特定问题推迟了一段时间,但不能再忽略它了。如题所述:当我right-click一个节点时,图表的context-menu就会显示出来。如果我禁用图表的 context-menu,节点一会显示得很好。
这让我相信这是 parent 控件在打开上下文菜单时优先的问题。我已经尝试覆盖 parent 和 child 控件中的鼠标事件并将它们设置为已处理,但我就是想不通!
谁能帮我解决这个非常烦人的问题?
旧但以防万一有人登陆这里,我能够使用以下技巧解决这个问题。 (在我的例子中,父控件是 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
直接分配给您的子控件。
我基于 Canvas 在 WPF 中制作了一个非常漂亮的 NodeGraph,现在我正在通过 right-click 菜单添加漂亮的功能。
这些菜单是上下文相关的。意思是图形背景上的 right-click 将显示图形上下文菜单,而在图形中 right-click 节点将显示节点上下文菜单,或者如果节点有任何 child-controls 菜单, 那些.
我已经将这个特定问题推迟了一段时间,但不能再忽略它了。如题所述:当我right-click一个节点时,图表的context-menu就会显示出来。如果我禁用图表的 context-menu,节点一会显示得很好。
这让我相信这是 parent 控件在打开上下文菜单时优先的问题。我已经尝试覆盖 parent 和 child 控件中的鼠标事件并将它们设置为已处理,但我就是想不通!
谁能帮我解决这个非常烦人的问题?
旧但以防万一有人登陆这里,我能够使用以下技巧解决这个问题。 (在我的例子中,父控件是 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
直接分配给您的子控件。