我有一个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上不起作用。我使用了错误的事件吗?
答案 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>