命令为WPF文本框,当我们按Enter键时触发

将WPF应用程序中的VIEWMODEL绑定到VIEWMODEL类的Command非常简单。 我想为TextBox实现类似的绑定。

我有一个TextBox ,我需要将它绑定到一个Command ,当我点击回车键TextBox被激活。 目前,我正在使用以下处理程序的KeyUp事件,但它看起来很丑…我不能把它放在我的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!"); } } 

有一个更好的方法吗?

雅利安,并不是每个WPF对象都支持命令。 所以,如果你不想这样做,你需要从你的代码中调用你的视图模型(稍微耦合一下),或者使用一些MVVM消息传递实现来解耦。 有关示例,请参阅MVVM Light Messaging工具包 。 或者简单的使用这样的触发器:

 <TextBox> <i:Interaction.Triggers> <i:EventTrigger EventName="KeyUp"> <i:InvokeDataCommand Command="{Binding MyCommand}"/> </i:EventTrigger> </i:Interaction.Triggers> </TextBox> 

我遇到了同样的问题,并find了解决办法,下面是代码示例:

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

我喜欢Sarh的答案,但是在我的程序中不起作用,除非我改变EnterReturn

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

您可以将true设置为AcceptReturn属性。

  <TextBox AcceptsReturn="True" />