按下Enter键时,WPF MVVM取消选择文本框

本文关键字:取消 选择 文本 MVVM WPF Enter 键时 按下 | 更新日期: 2023-09-27 18:27:40

我想要的是当用户按下回车键时,当前聚焦的文本框何时失去焦点。我认为实现这一点的唯一方法是使用XAML中的输入绑定绑定到代码中的命令,该命令将整个文本框控件传递到视图模型。我不喜欢这种方法,希望有人能"干净"地处理这个问题。

按下Enter键时,WPF MVVM取消选择文本框

您可以创建一个自定义文本框,并将其放入控件代码中:

public partial class CustomTextBox : TextBox
{
    public CustomTextBox()
    {
        InitializeComponent();
    }
    protected override void OnKeyDown(KeyEventArgs e)
    {
        base.OnKeyDown(e);
        if(e.Key == Key.Return)
        Keyboard.ClearFocus();
    }
}

然后,只要在任何你想要的特定行为的地方使用你的自定义文本框。

登录时通常会得到一个密码框,您需要在其中允许输入键。

<PasswordBox VerticalAlignment="Center" x:Name="txtPassword" Template="{StaticResource PassBoxBaseControlTemplate}" Height="25" BorderBrush="Black" Width="165.031">
   <PasswordBox.InputBindings>
        <KeyBinding Key="Enter" Command="{Binding ComLoginClickOK}" CommandParameter="{Binding ElementName=txtPassword}"/>
   </PasswordBox.InputBindings>
</PasswordBox>