Подтвердить что ты не робот

Ярлыки клавиш в WPF MVVM?

У меня есть приложение WPF, которое следует за шаблоном MVVM. Мне нужно реализовать быстрые клавиши. Эти ярлыки должны контролировать поведение управления WebBrowser. Я определил первую пользовательскую команду и добавил для просмотра inputbindings. Там будет гораздо больше команд, и им придется вызывать скрипты в браузере:

MainWindow.xaml.cs:

        ...

        CommandBinding cb = new CommandBinding(RemoteControlCommands.TestCommand, MyCommandExecuted,  MyCommandCanExecute);
        this.CommandBindings.Add(cb);

        KeyGesture kg = new KeyGesture(Key.Q, ModifierKeys.Control);
        InputBinding ib = new InputBinding(RemoteControlCommands.TestCommand, kg);
        this.InputBindings.Add(ib);
    }

    private void MyCommandExecuted(object sender, ExecutedRoutedEventArgs e)
    {
        webBrowser.InvokeScript("foo", "Hello World!");
    }

    private void MyCommandCanExecute(object sender, CanExecuteRoutedEventArgs e)
    {
        e.CanExecute = true;
    }

Мой вопрос заключается в том, как поместить это в pvp MVVM? MVVM - это новое понятие для меня, но я понимаю, как связать команду view, чтобы просмотреть модель и там выполнить методы или изменить свойства. Однако в этом случае мне нужно выполнить метод управления в представлении. Какое лучшее место для обработки ярлыков в этом сценарии?

4b9b3361

Ответ 1

<Window.InputBindings>
  <KeyBinding Command="{Binding MyCommand, Source=viewModel...}"
              CommandParameter="{Binding,ElementName=browserControl,Mode=Self}"
              Gesture="CTRL+R" />
</Window.InputBindings>

Вы можете связать свойство команды с командой View Model.