C# 当我以编程方式设置组件的焦点时,键盘关闭

C# 当我以编程方式设置组件的焦点时,键盘关闭,c#,windows-phone-7,C#,Windows Phone 7,我必须在页面中输入字段、用户名和密码。在用户名文本框上单击enter键时,我想将焦点移动到PasswordBox,焦点正确,但键盘关闭。我怎样才能保持键盘打开 if (p.OriginalSource is PasswordBox) { loginCommand.Execute(null); } else if (p.OriginalSource is TextBox) //assuming there is no third box that can handle {

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

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();
        }

这对我有帮助

从视图模型来看,即使付出了太多的努力,它也不适用于我。所以我从代码隐藏中尝试了这个方法,它成功了

对于一种登录屏幕,我处理了username字段(
TextBox
)的keydown事件,并在enter keydown事件中将焦点设置为password字段(
PasswordBox
):

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

不起作用。我在keyUp中已经有了这个(也尝试了keydown)你解决了这个问题吗?@MinaSamy是的,我不知怎么解决了。从viewmodel看,它不起作用,但在我尝试执行代码隐藏时起作用。没问题,请分享解决方案好吗?@MinaSamy plz查看我刚才添加的答案。