C# WPF上下文菜单在单击时消失

C# WPF上下文菜单在单击时消失,c#,wpf,contextmenu,C#,Wpf,Contextmenu,我有一个WPF应用程序,并为网格添加了一个ContextMenu。用户在网格上进行选择,然后进行选择;此时会出现一个上下文菜单。我在ContextMenu上有一些文本框,用户可以在其中输入一些值,但是如果用户单击ContextMenu本身(而不是文本框内部),对话框就会消失。我想防止这种情况发生,并尝试获取一些事件,指示何时单击ContextMenu private void CreateContextMenu() { detectionInfoContextMenu = new Conte

我有一个WPF应用程序,并为网格添加了一个ContextMenu。用户在网格上进行选择,然后进行选择;此时会出现一个上下文菜单。我在ContextMenu上有一些文本框,用户可以在其中输入一些值,但是如果用户单击ContextMenu本身(而不是文本框内部),对话框就会消失。我想防止这种情况发生,并尝试获取一些事件,指示何时单击ContextMenu

private void CreateContextMenu()
{
  detectionInfoContextMenu = new ContextMenu(); //create an instance of the class     
   //selectionBoxCanvas.ContextMenu = detectionInfoContextMenu;
   playVideoGrid.ContextMenu = detectionInfoContextMenu;
   detectionInfoContextMenu.MouseDown += detectionInfoContextMenu_MouseDown;
}

void detectionInfoContextMenu_MouseDown(object sender, MouseButtonEventArgs e)
{
    if(e.LeftButton == MouseButtonState.Pressed)
    MessageBox.Show("You clicked me!");
}

我正在尝试获取鼠标按钮事件,以确定是否单击了鼠标左键。这似乎在其他控件(如画布等)上运行良好,但在上下文菜单上似乎不起作用。我使用了错误的事件吗

您可以使用
StaysOpenOnClick
阻止关闭菜单:

<MenuItem StaysOpenOnClick="True">Test</MenuItem>
<ContextMenu>
    <MenuItem StaysOpenOnClick="True">
        <MenuItem.Header>
            <TextBox Width="100" />
        </MenuItem.Header>
    </MenuItem>
</ContextMenu>

我认为在这种情况下不应该使用上下文菜单。改为使用。什么时候使用哪个合适?在我看来,当它实际上是一个菜单时,你应该使用ContextMenu——一个操作列表(如打开、关闭、撤消等)。而弹出窗口是为其他一切-输入,选择,一些自定义用户界面;我在C#中动态创建了ContextMenu,但感谢XAML代码