2016-01-02 2 views
0

У меня уже есть группа делегатов в моей модели просмотра. Я хочу реализовать событие KeyDown/KeyUp в определенном текстовом поле. То, что я хочу, в основном, когда пользователь нажал кнопку Enter, DelegateCommand выполнит содержащиеся коды. Что мне нужно сделать для этого?Проверка нажатой кнопки ввода

+0

То, что вы сделали далеко? Пожалуйста, поделитесь своим кодом и покажите, в какой момент вы пытаетесь это сделать? Что вы пробовали до сих пор? – curiousBoy

+0

Я уже нашел решение для этого: D – rydev

+0

Почему вы просто не можете просто вызвать «ViewModel.MyCommand.Execute()» прямо в обработчике событий TextBox_KeyDown? – Fabio

ответ

0

так после игры, я нашел решение ..

private void TextBox_KeyDown(object sender, KeyRoutedEventArgs e) 
    { 
     if (e.Key == VirtualKey.Enter) 
     { 
      additem_button.Focus(FocusState.Pointer); 
     } 
    } 
//FocusState.Pointer as if the button was clicked by the user.. 

Но это только работа на ПК Тхо. На мобильных телефонах он закрывает клавиатуру.

Edit 1

Похоже, я нашел другое решение, которое может быть использовано с MVVM: D

private void TextBox_KeyDown(object sender, KeyRoutedEventArgs e) 
    { 
     if (e.Key == VirtualKey.Enter) 
     { 
      additem_button.Command.Execute(""); 
      e.Handled = true; 
     } 
    } 
// button.Command.Execute("your parameter"); because on my button, the 
// command has been binded to a Delegate Command inside the VM :D 

Это будет работать на ПК и мобильные телефоны ..

+0

Возможно, вы хотите проверить команду перед выполнением: 'if (additem_button.Command.CanExecute() == true) additem_button.Command.Execute();' – Fabio

+0

@Fabio, благодарю вас за напоминание! : D – rydev

+0

, если вы хотите, чтобы решение было более общим и более многоразовым, вы можете сделать Поведение, чтобы достичь этого. С уникальным поведением вы можете привязать любую ICommand к любому TextBox, если хотите. –