WPF MVVM在Enter键上取消选择文本框

时间:2014-10-24 15:44:13

标签: c# wpf mvvm prism

我想要的是当用户点击回车键时当前聚焦的文本框何时失去焦点。我能想到实现这一目标的唯一方法是使用XAML中的输入绑定绑定到代码中的命令,该代码将整个文本框控件传递给viewmodel。我不喜欢这种方法,并希望有人有一个清洁的'解决这个问题的方法。

2 个答案:

答案 0 :(得分:3)

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

public partial class CustomTextBox : TextBox
{
    public CustomTextBox()
    {
        InitializeComponent();
    }

    protected override void OnKeyDown(KeyEventArgs e)
    {
        base.OnKeyDown(e);
        if(e.Key == Key.Return)
        Keyboard.ClearFocus();
    }
}

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

答案 1 :(得分:1)

通常,您在登录时会收到一个密码框,您需要输入密钥。

<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>