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

Kor*_*tak 0 validation silverlight 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);
}
Run Code Online (Sandbox Code Playgroud)

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

问题是验证.

Silverlight的PasswordBox的默认行为是在控件失去焦点时执行验证.我PasswordBox必然会遇到一些User对象.当我单击Enter按钮时,将调用事件处理程序,然后调用该事件处理程序okButtonClick(null, null).问题是当时PasswordBox还没有失去焦点,所以必然的user.Password财产PasswordBox仍然是空的.

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

如何设置绑定,以便控件将更新每个文本更改而不是LostFocus事件的绑定?达到我需要的正确方法是什么?

小智 5

使用PasswordChanged事件Passwordbox.
TextboxTextboxChanged事件.