我的 WPF 程序中的所有内容通常都是自定义的。在这个问题中,我有一个自定义菜单按钮,它的作用类似于 2007 年的MS Office 按钮。单击它会弹出一个上下文菜单。我的问题是试图让它关闭。打开后,上下文菜单永远不会关闭。我想当用户点击菜单框外的任何地方时它是否会关闭,就像普通的上下文菜单的行为一样。
这是我到目前为止所拥有的:
.xaml 窗口:
<!--- MAIN MENU BUTTON -->
<Button Click="Button_Click_1" Margin="5,4,0,0" Name="Button_1" Height="50" VerticalAlignment="Top" HorizontalAlignment="Left" Width="49.758">
<!--- MAIN MENU -->
<Button.ContextMenu>
<ContextMenu x:Name="MainContextMenu" PlacementRectangle="{Binding RelativeSource={RelativeSource Self}}" MouseLeave="ContextMenuMouseLeave" >
...
</Button.ContextMenu>
现在我只是想让它在鼠标离开菜单时关闭,因为我不知道在描述上下文菜单之外的点击时使用什么关键字。如您所见,当鼠标离开菜单时,程序调用“ContextMenuMouseLeave”函数。
.xaml.cs 代码隐藏:
//CLOSE CONTEXT MENU
private void ContextMenuMouseLeave(object sender, EventArgs e)
{
MainContextMenu.IsOpen = false;
}
显然,在 WPF 中,上下文菜单对象不包含Close()
, 或Hide()
。我也尝试过MyContextMenu.IsOpen = false;
,SendKeys.SendWait("{ESC}");
但没有运气。如何让这个菜单窗口在 WPF 中再次关闭?
-我也在另一个论坛上发布了这个问题,我想知道上下文菜单是否不是最好的方法?显然,上下文菜单主要在使用过的右键单击某物时显示。我将使用此按钮打开程序的主菜单。我应该使用其他对象吗?
谢谢你。