按下回车键时不绑定数据

时间:2011-08-10 05:23:44

标签: data-binding silverlight-4.0 mvvm

我正在使用Silverlight& MVVM模式。

<TextBox Name="UserNameText" Text="{Binding Path=Username, Mode=TwoWay}" HorizontalContentAlignment="Stretch"/>

在这里,我将TextBox绑定到属性Username,当按下Enter键时,我正在View Model中执行LoginCommand。

private void LayoutRoot_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.Key == Key.Enter)
            {
                this._viewModel.LoginCommand.Execute(null);
            }
        }

在TextBox中输入用户名并从UserName TextBox中按下ENTER键时,将调用LoginCommand,但该值不会在有用的用户名中更新。它仍然包含null。

如果仅丢失焦点,则绑定值。如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

更改绑定中的UpdateSourceTrigger=PropertyChanged。默认情况下,TextBox仅更新LostFocus上的绑定值。将其设置为PropertyChanged将使其在属性更改时随时更新绑定值。

<TextBox Name="UserNameText" 
         Text="{Binding Path=Username, UpdateSourceTrigger=PropertyChanged}" />

答案 1 :(得分:0)

你无法解决这个问题,它是如何运作的(它更新焦点丢失,你是对的)。 但是,解决方案非常简单:您只需将文本框的文本作为命令的参数发送:

this._viewModel.LoginCommand.Execute(((TextBox)sender).Text);