我想通过按ctrl + menu打开以下上下文菜单:
<Window.ContextMenu>
<ContextMenu>
<MenuItem Name="item0" Header="mode_0"/>
</ContextMenu>
</Window.ContextMenu>
我有另一个上下文菜单,它绑定到窗口中的一个按钮。我希望能够打开窗口上下文菜单,无论什么元素聚焦。为了防止无法在任何时间打开窗口上下文,例如按钮是聚焦的。
我试图通过以下方式打开它:
Context.Menu.name.isOpened = true;
检查了pressedKey事件后,但在释放菜单按钮后,contextMenu立即关闭。 有谁知道更好......工作方式?
答案 0 :(得分:1)
不确定如果我理解你正在寻找什么。
你可能应该做那样的事情:
定义一个命令
OpenMenu = new RoutedUICommand("OpenMenu ", "OpenMenu ", typeof(Commands), new InputGestureCollection {
new KeyGesture(Key.O, ModifierKeys.Control, "Ctrl+O") });
在你的窗口中使用它
<Window.CommandBindings>
<CommandBinding Command="local:Commands.OpenMenu "
Executed="OpenMenuExecuted" />
</Window.CommandBindings>
private void OpenMenuExecuted(object sender, ExecutedRoutedEventArgs e)
{
this.ContextMenu.IsOpen = true;
}
注意:如果您不想打开窗口ContextMenu
的右键单击按钮,可以通过附加ContextMenuOpening
事件处理程序并设置e.Handled = true;
答案 1 :(得分:1)
我认为您必须在窗口中禁用菜单键,否则操作系统会尝试解析它..
类似的东西:
public MainWindow()
{
InitializeComponent();
this.PreviewKeyUp += MainWindow_PreviewKeyUp;
}
void MainWindow_PreviewKeyUp(object sender, KeyEventArgs e)
{
if (e.Key == Key.Apps)
{
e.Handled = true;
}
}
然后以编程方式打开您自己的上下文菜单。
答案 2 :(得分:0)
Argh,菜单按钮触发keyUp-event ...我一直在听keyDown-event。这就是为什么菜单会在按键上打开并通过释放菜单按钮来关闭。