Используйте клавишу Enter на клавиатуре, а также щелчок мыши, чтобы привязать кнопку к команде - PullRequest
1 голос
/ 22 января 2011

У меня есть приложение Silverlkight 4, созданное с использованием MVVM Light.У меня есть различные виды с кнопками, которые связаны с командами в моделях представления.

Все работает нормально, когда вы нажимаете на кнопку, запускается команда и все, что было вызвано, работает.

Все, что я хочу изменить, - вместо того, чтобы пользователь нажимал клавишукнопка для вызова команды. Я бы хотел, чтобы у них была опция нажатия клавиши возврата на клавиатуре.

Я просто подумал, но в данный момент я застрял и не могу найти никакой информации о том, как этого добиться.Любые идеи, пожалуйста.

Ответы [ 2 ]

0 голосов
/ 24 января 2011

Спасибо за ответ Vixen. Я мог видеть, как это будет работать. Я уже отсортировал его с помощью кода.

В xaml я добавляю событие keydown к свойству элемента управления, в котором я находился, в моем случае это сетка, но мог быть списком, текстовым полем или чем-то еще.

Затем в коде я добавил

private void IfEnterIsPressed(object sender, KeyEventArgs e)
{
   if (e.Key == Key.Enter)
   { 
      var vm = DataContext as ViewModel; if (vm != null) vm.MyCommand.Execute(null); 
   }            
}

Это сработало для меня

0 голосов
/ 23 января 2011

Почему вы не добавляете событие KeyUp на элемент управления - и обрабатываете клавишу «Ввод» в коде для запуска события в модели представления?

EG:

InXAML:

......... KeyUp="Control_KeyUp" />

В КОДЕ:

private void Control_KeyUp(object sender, System.Windows.Input.KeyEventArgs e)
    {
        if(e.Key == System.Windows.Input.Key.Enter)
        {
            GlobalViewModelLocator.ViewModel.FireControlCommand(..);
        }
    }

Где GlobalViewModelLocator относится к статическому классу, который содержит ссылки на модели представлений, используемые в представлениях.

...