It is very easy to bind Button
s in WPF apps to Command
s 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?
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>
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>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With