点击后,WPF ContextMenu消失

时间:2014-08-11 09:25:18

标签: c# wpf contextmenu

我有一个WPF应用程序,我为网格添加了一个ContextMenu。用户在网格上进行选择;出现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!");
}

我正在尝试获取鼠标按钮事件以确定是否单击了鼠标左键。这似乎在其他控制上非常有效,例如canvas等,但似乎在ContextMenu上不起作用。我使用了错误的事件吗?

1 个答案:

答案 0 :(得分:2)

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

<MenuItem StaysOpenOnClick="True">Test</MenuItem>

或者你使用Popup,正如Ivan Zub在评论中所建议的那样。

这里是菜单中TextBox的示例:

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