命令为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的答案,但是在我的程序中不起作用,除非我改变Enter
来Return
:
<TextBox> <TextBox.InputBindings> <KeyBinding Key="Return" Command="{}" /> </TextBox.InputBindings> </TextBox>
您可以将true设置为AcceptReturn属性。
<TextBox AcceptsReturn="True" />