m.r.m.40 Ответов: 1

Привязка команд Wpf для выхода из программы по клавише.входить


Привет,
Я пытаюсь сделать так, чтобы мое приложение WPF показывало мне сообщение в любое время, когда я нажимаю "Enter",
Это то, чего я хочу достичь в любое время, когда приложение работает, когда я нажимаю Enter, оно дает мне сообщение или создает исключение, чтобы я мог видеть, что оно читает мое нажатие клавиши.
Ниже я помещаю свой код (поскольку я искал так много решений для своей проблемы в течение последней недели, он очень похож на коды, которые я нашел об этой проблеме на SO, MSDN, Channel9 и так далее)

Мой код XAML:
<Window.InputBindings>
    <KeyBinding Command="{Binding throwExceptionTest}" Key="Enter"/>
</Window.InputBindings>


Код главного окна:
public MainWindow()
        {
            InitializeComponent();
            DataContext = this;
        }


Код ViewModel:
public class MyViewModel
   {
       private ICommand throwExceptionTest;

       public ICommand ThrowExceptionTest => throwExceptionTest?? (throwExceptionTest = new ActionCommand(() =>
                      {
                          MessageBox.Show("ThrowExceptionTest");
                      }));
   }


Код ICommand:
public class ActionCommand : ICommand
   {
       private readonly Action _action;

       public ActionCommand(Action action)
       {
           _action = action;
       }

       public void Execute(object parameter)
       {
           _action();
       }

       public bool CanExecute(object parameter)
       {
           return true;
       }

       public event EventHandler CanExecuteChanged;
   }


Другая проблема, с которой я сталкиваюсь здесь, поскольку я новичок в WPF, заключается в том, что я не знаю, как я могу отследить это событие нажатия клавиши.

Любая помощь, подсказка, комментарий могут быть полезны.
Заранее благодарю вас за то, что вы потратили свое время на чтение этого вопроса и помогли мне.
Спасибо,

Что я уже пробовал:

Я искал на прошлой неделе SO, MSDN, Channel9, YouTube, и все же проблема все еще сохраняется.

1 Ответов

Рейтинг:
8

Graeme_Grant

Вы устанавливаете DataContext из MainWindow к себе, поэтому вам нужно будет добавить следующее: MainWindow с фоновым кодом:

public ICommand MyCommand { get; }
    = new ActionCommand(() =>
    {
        Debug.WriteLine("==> Enter Key Pressed");
    });

Затем добавьте следующую строку в ваш файл MainWindow в XAML:
<Window.InputBindings>
    <KeyBinding Key="Enter" Command="{Binding MyCommand}"/>
</Window.InputBindings>

Теперь, когда вы нажимаете кнопку Enter ключ, команда выстрелит.


m.r.m.40

Большое вам спасибо, это сработало.

Graeme_Grant

не беспокойтесь... Еще одна вещь, которую следует иметь в виду, заключается в том, что при использовании привязки вы привязываетесь к свойству, а не к классу или переменной экземпляра. Если вы хотите привязаться к своей ViewModel, то установите DataContext к экземпляру виртуальной машины, а не к самому MainWindow.