【发布时间】:2014-08-11 09:25:18
【问题描述】:
我有一个 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!");
}
我正在尝试获取鼠标按钮事件以确定是否单击了鼠标左键。这似乎在其他控件上效果很好,例如画布等,但似乎在 ContextMenu 上不起作用。我使用了错误的事件吗?
【问题讨论】:
-
我认为你不应该在这种情况下使用上下文菜单。请改用Popup。
-
什么时候用哪个合适?
-
在我看来,当它实际上是一个菜单时,您应该使用 ContextMenu - 一个操作列表(如打开、关闭、撤消等)。而 Popup 则适用于其他所有内容 - 输入、选择、一些自定义 UI。
标签: c# wpf contextmenu