Executing viewmodels command on enter in TextBox

Marks picture Marks · Aug 5, 2010 · Viewed 32.7k times · Source

I want to execute a command in my viewmodel when the user presses enter in a TextBox. The command works when bound to a button.

<Button Content="Add" Command="{Binding Path=AddCommand}" />

But I can't bring it to work from the TextBox. I tried an Inputbinding, but it didn't work.

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

I also tried to set the working button as default, but it doesn't get executed when enter is pressed.

Thanks for your help.

Answer

mkamioner picture mkamioner · Jan 14, 2014

I know I am late to the party, but I got this to work for me. Try using Key="Return" instead of Key="Enter"

Here is the full example

<TextBox Text="{Binding FieldThatIAmBindingToo, UpdateSourceTrigger=PropertyChanged}">
    <TextBox.InputBindings>
        <KeyBinding Command="{Binding AddCommand}" Key="Return" />
    </TextBox.InputBindings>
</TextBox>

Make sure to use UpdateSourceTrigger=PropertyChanged in your binding, otherwise the property will not be updated until focus is lost, and pressing enter will not lose focus...

Hope this was helpful!