WPF 文本框的命令,当我们按 Enter 键时触发
本文关键字:Enter 我们 文本 命令 WPF | 更新日期: 2023-09-27 18:03:55
将 WPF 应用程序中的Button
绑定到VIEWMODEL
类中的Command
非常容易。我想为TextBox
实现类似的绑定.
我有一个TextBox
,我需要将其绑定到一个Command
,当我在TextBox
聚焦时按 Enter 时,该会触发。目前,我正在为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!");
}
}
有没有更好的方法可以做到这一点?
我遇到了同样的问题并在这里找到了解决方案,这是代码示例:
<TextBox>
<TextBox.InputBindings>
<KeyBinding Command="{Binding Path=CmdSomething}" Key="Enter" />
</TextBox.InputBindings>
</TextBox>
Aryan,并非每个 WPF 对象都支持命令。因此,如果您不想这样做,则需要从代码隐藏(稍微耦合(调用视图模型,或者使用一些 MVVM 消息传递实现来解耦。有关示例,请参阅 MVVM 轻型消息传递工具包。或者像这样简单地使用触发器:
<TextBox>
<i:Interaction.Triggers>
<i:EventTrigger EventName="KeyUp">
<i:InvokeDataCommand Command="{Binding MyCommand}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</TextBox>
我喜欢
Sarh 的答案,但它在我的程序中不起作用,除非我Enter
更改为 Return
:
<TextBox>
<TextBox.InputBindings>
<KeyBinding Key="Return" Command="{}" />
</TextBox.InputBindings>
</TextBox>
<TextBox Text="{Binding FieldThatIAmBindingToo, UpdateSourceTrigger=PropertyChanged}">
<TextBox.InputBindings>
<KeyBinding Command="{Binding AddCommand}" Key="Return" />
</TextBox.InputBindings>
</TextBox>
我从这里得到了答案
可以将 true 设置为 AcceptReturn 属性。
<TextBox AcceptsReturn="True" />