web-dev-qa-db-fra.com

Commande pour WPF TextBox qui se déclenche lorsque nous appuyons sur la touche Entrée

Il est très facile de lier Buttons dans les applications WPF à Commands dans une classe VIEWMODEL. Je voudrais obtenir une liaison similaire pour un TextBox.

J'ai un TextBox et je dois le lier à un Command qui se déclenche lorsque je frappe Enter tandis que TextBox est focalisé. Actuellement, j'utilise le gestionnaire suivant pour l'événement KeyUp, mais il semble laid ... et je ne peux pas le mettre dans ma classe VIEWMODEL.

private void TextBox_KeyUp(object sender, KeyEventArgs e)
{
    if (e.Key == System.Windows.Input.Key.Enter)
    {
        // your event handler here
        e.Handled = true;
        MessageBox.Show("Enter Key is pressed!");
    }
}

Y a-t-il une meilleure manière de faire cela?

69
Aryan SuryaWansi

J'ai rencontré le même problème et trouvé la solution ici , voici l'exemple de code:

<TextBox>
  <TextBox.InputBindings>
    <KeyBinding Command="{Binding Path=CmdSomething}" Key="Enter" />
  </TextBox.InputBindings>
</TextBox>
221
sarh

J'aime la réponse de Sarh, mais cela ne fonctionnerait pas dans mon programme, sauf si j'ai changé Enter en Return:

<TextBox>
    <TextBox.InputBindings>
        <KeyBinding Key="Return" Command="{}" />
   </TextBox.InputBindings>
</TextBox>
11
Nightmare Games