1

我的 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 中再次关闭?

-我也在另一个论坛上发布了这个问题,我想知道上下文菜单是否不是最好的方法?显然,上下文菜单主要在使用过的右键单击某物时显示。我将使用此按钮打开程序的主菜单。我应该使用其他对象吗?

谢谢你。

4

1 回答 1

2

您可以将MainContextMenu.Visibility设置为Visibility.Collapsed

于 2013-07-16T19:46:39.960 回答