当我以编程方式将焦点设置为组件时,键盘关闭

本文关键字:组件 键盘 设置 编程 方式 焦点 | 更新日期: 2023-09-27 18:33:06

我必须在页面中输入字段,用户名和密码。 在用户名文本框上单击输入时,我想将焦点移动到密码框,焦点正确,但键盘关闭。 如何保持键盘打开?

if (p.OriginalSource is PasswordBox)
{
        loginCommand.Execute(null);
}
else if (p.OriginalSource is TextBox) //assuming there is no third box that can handle
{
     var element = (p.OriginalSource as TextBox).FindName("passwordbox");
     var ss = ((WatermarkPasswordBox)element).Focus();
     ((WatermarkPasswordBox)element).UpdateLayout();
     //((WatermarkPasswordBox)element).Password = "";
}

当我以编程方式将焦点设置为组件时,键盘关闭

为您的用户名文本框创建 KeyDown 事件,并在事件中编写代码,如下所示

if (e.Key == System.Windows.Input.Key.Enter)
        {
            PasswordBox.Focus();
        }

这对我有帮助

好吧,

即使付出了太多努力,它也从视图模型中对我不起作用。 所以我从代码隐藏中尝试了这个,它奏效了。

对于一种登录屏幕,我处理了用户名字段(TextBox)的Keydown事件,并将焦点设置为输入键按下事件时归档的密码(PasswordBox):

private void TextBox_KeyDown(object sender, KeyEventArgs e)
{
    if (e.Key.Equals(Key.Enter))
    {
        PasswordBox.Focus();
    }
}