<MenuItem x:Name="newProjectButton" Click="OnNewProjectButton_Click" Header="_New Project">
</MenuItem>
每当按下Alt + N时,我想调用OnNewProjectButton_Click。不幸的是,上面的代码不起作用,因为仅当菜单被展开(即具有焦点)时才调用处理程序。
答案 0 :(得分:1)
您可以使用ApplicationCommands.New,因为它已经提供了该功能。默认WPF Command Model非常酷。即使您决定不使用默认命令模型,第二个链接也应该显示如何连接您需要的输入手势。
编辑:这是一个示例实现......
<Window.CommandBindings>
<CommandBinding Command="ApplicationCommands.New"
CanExecute="NewApplicationCommand_CanExecute"
Executed="NewApplicationCommand_Executed" />
</Window.CommandBindings>
<Grid>
<Menu>
<MenuItem Header="_File">
<MenuItem Command="ApplicationCommands.New" Header="_New Project" />
</MenuItem>
</Menu>
</Grid>
背后的代码......
private void NewApplicationCommand_CanExecute(object sender, CanExecuteRoutedEventArgs e)
{
// Whatever logic you use to determine whether or not your
// command is enabled. I'm setting it to true for now so
// the command will always be enabled.
e.CanExecute = true;
}
private void NewApplicationCommand_Executed(object sender, ExecutedRoutedEventArgs e)
{
Console.WriteLine("New command executed");
}
答案 1 :(得分:0)
您可以在菜单项
上设置InputGestureText<MenuItem Header="Paste"
ToolTip="Paste the selected text to text box"
InputGestureText="Ctrl+V" />
但与WinForms不同的是"The application must handle the user's input to carry out the action"。
因此,请考虑使用WPF commands,因为它们会自动为您执行此操作。我发现Windows Presentation Foundation Unleashed很好地涵盖了这一点。