密码框验证文本更改而不是丢失焦点

时间:2012-01-25 15:55:08

标签: silverlight validation binding focus keydown

框架:Silverlight 4

我有一个简单的ChildWindow,其中包含用户名TextBox和密码PasswordBox。我已将事件处理程序附加到窗口的KeyDown事件。

private void onKeyDown(object sender, KeyEventArgs e)
{
    if (e.Key == Key.Escape)
        cancelButtonClick(null, null);

    if (e.Key == Key.Enter)
        okButtonClick(null, null);
}

我想要实现的是当用户按下键盘上的Enter键时,程序的行为就像用户点击了OK按钮一样。

问题是验证。

Silverlight的PasswordBox的默认行为是在控件失去焦点时执行验证。我的PasswordBox绑定到某个User对象。当我单击Enter按钮时,将调用事件处理程序,然后调用okButtonClick(null, null)。问题是PasswordBox当时还没有失去焦点,因此user.Password绑定的PasswordBox属性仍为空。

我试图将btnOK.Focus()放在okButtonClick(null, null)之前,但无济于事。

如何设置绑定,以便控件在每次文本更改而不是LostFocus事件上更新绑定?什么是实现我需要的正确方法?

1 个答案:

答案 0 :(得分:5)

PasswordChanged使用Passwordbox事件 TextboxTextboxChanged个事件。