Как добавить ключи доступа к пунктам меню? - PullRequest
0 голосов
/ 18 января 2010
<MenuItem x:Name="newProjectButton" Click="OnNewProjectButton_Click" Header="_New Project">
</MenuItem>

Я хочу вызывать OnNewProjectButton_Click при каждом нажатии Alt + N. Приведенный выше код, к сожалению, не работает, потому что обработчик вызывается только в том случае, если меню расширено (т.е. имеет фокус).

Ответы [ 2 ]

1 голос
/ 18 января 2010

Вы можете использовать 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");
    }
0 голосов
/ 18 января 2010

Вы видите, чтобы установить InputGestureText в пункте меню

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

Но в отличие от WinForms «Приложение должно обрабатывать ввод пользователя для выполнения действия» .

Поэтому рассмотрите возможность использования команд WPF , поскольку они делают это автоматически.Я обнаружил, что Windows Presentation Foundation Unleashed хорошо описывает это.

...