0
<MenuItem x:Name="newProjectButton" Click="OnNewProjectButton_Click" Header="_New Project">
</MenuItem>

每当按下 Alt+N 时,我都想调用 OnNewProjectButton_Click。不幸的是,上面的代码不起作用,因为只有当菜单展开(即有焦点)时才会调用处理程序。

4

2 回答 2

1

您可以为此使用ApplicationCommands.New,因为它已经提供了该功能。默认的WPF 命令模型非常酷。即使您决定不使用默认的命令模型,第二个链接也应该向您展示如何连接您需要的输入手势。

编辑:这是一个示例实现......

<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");
    }
于 2010-01-18T12:18:29.207 回答
0

您会看到在菜单项上设置InputGestureText

<MenuItem Header="Paste" 
 ToolTip="Paste the selected text to text box" 
 InputGestureText="Ctrl+V" />

但与 WinForms 不同的是,“应用程序必须处理用户的输入才能执行操作”

因此,请考虑使用 WPF命令,因为它们会自动为您执行此操作。我发现Windows Presentation Foundation Unleashed很好地涵盖了这一点。

于 2010-01-18T12:28:17.700 回答