как добавить несколько командных привязок в wpf - PullRequest
2 голосов
/ 20 марта 2012

Я работаю с WPF. Я хочу создать сочетания клавиш для моего приложения WPF. Я создал следующим образом. Первый тег привязки команды для « open » работает, а привязка команды для выхода не работает. Я не знаю, в чем причина.

<Window.CommandBindings>
<CommandBinding Command="Open" Executed="CommandBinding_Executed"/>
<CommandBinding Command="Exit" Executed="CommandBinding_Executed_1" />
</Window.CommandBindings>
<Window.InputBindings>
<KeyBinding Command="Open" Key="O" Modifiers="control" />
<KeyBinding Command="Exit" Key="E" Modifiers="control"/>
</Window.InputBindings>

Над кодом появляется следующая ошибка:

Невозможно преобразовать строку «Выход» в атрибуте «Команда» в объект типа 'System.Windows.Input.ICommand. CommandConverter не может конвертировать из System.String. Ошибка в объекте System.Windows.Input.CommandBinding в файл разметки 'WpfApplication2; component / window1.xaml' Строка 80, позиция 25.

1 Ответ

4 голосов
/ 20 марта 2012

Ваша проблема в том, что нет команды выхода. Тебе придется свернуть свое.

См. Здесь для встроенных ApplicationCommands

Создать свой собственный довольно легко, я использую класс статической утилиты для хранения часто используемых команд. Примерно так:

public static class AppCommands
{
    private static RoutedUICommand exitCommand = new RoutedUICommand("Exit","Exit", typeof(AppCommands));

    public static RoutedCommand ExitCommand
    {
        get { return exitCommand; }
    }

    static AppCommands()
    {
        CommandBinding exitBinding = new CommandBinding(exitCommand);
        CommandManager.RegisterClassCommandBinding(typeof(AppCommands), exitBinding);
    }
}

Тогда вы сможете связать это так:

<KeyBinding Command="{x:Static local:AppCommands.Exit}" Key="E" Modifiers="control"/>
...