Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Command for WPF TextBox that fires up when we hit Enter Key

It is very easy to bind Buttons in WPF apps to Commands in a VIEWMODEL class. I'd like to achieve a similar binding for a TextBox.

I have a TextBox and I need to bind it to a Command that fires up when I hit Enter while the TextBox is focused. Currently, I'm using the following handler for the KeyUp event, but it looks ugly... and I can't put it in my VIEWMODEL class.

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!");     } } 

Is there a better way to do this?

like image 989
Aryan SuryaWansi Avatar asked Jul 30 '11 09:07

Aryan SuryaWansi


2 Answers

I've faced with the same problem and found solution here, here is the code sample:

<TextBox>   <TextBox.InputBindings>     <KeyBinding Command="{Binding Path=CmdSomething}" Key="Enter" />   </TextBox.InputBindings> </TextBox> 
like image 117
sarh Avatar answered Oct 05 '22 06:10

sarh


Aryan, not every WPF object supports commanding. So if you wan't to do that you'll need either to call your view model from your code behind (a little coupled) or use some MVVM Messaging implementation to decouple that. See MVVM Light Messaging toolkit for an example. Or simple use triggers like this:

<TextBox>     <i:Interaction.Triggers>         <i:EventTrigger EventName="KeyUp">             <i:InvokeDataCommand Command="{Binding MyCommand}"/>         </i:EventTrigger>     </i:Interaction.Triggers> </TextBox> 
like image 44
Erre Efe Avatar answered Oct 05 '22 06:10

Erre Efe