无法关闭自定义ContextMenu窗口

时间:2013-07-16 17:53:06

标签: wpf contextmenu

我的WPF程序中的所有内容通常都是自定义的。在这个问题中,我有一个自定义菜单按钮,其行为类似于2007年的MS Office button。单击它时会显示一个上下文菜单。我的问题是试图让它关闭。打开后,上下文菜单永远不会关闭。我希望当用户点击菜单框外的任何地方时它会关闭,就像正常的上下文菜单一样。

这是我到目前为止所做的:

.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中,Context Menu对象不包含Close()Hide()。我还试过MyContextMenu.IsOpen = false;SendKeys.SendWait("{ESC}");但没有运气。如何让这个菜单窗口在WPF中再次关闭?

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

谢谢。

1 个答案:

答案 0 :(得分:1)

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