Data binding 按enter键时,数据未绑定

Data binding 按enter键时,数据未绑定,data-binding,silverlight-4.0,mvvm,Data Binding,Silverlight 4.0,Mvvm,我正在使用Silverlight和MVVM模式 <TextBox Name="UserNameText" Text="{Binding Path=Username, Mode=TwoWay}" HorizontalContentAlignment="Stretch"/> 当在文本框中输入用户名并从用户名文本框中按ENTER键时,将调用LoginCommand,但Property username中的值不会更新。它仍然包含null 仅当焦点丢失时,才会绑定这些值。如何修复此问题?您无

我正在使用Silverlight和MVVM模式

<TextBox Name="UserNameText" Text="{Binding Path=Username, Mode=TwoWay}" HorizontalContentAlignment="Stretch"/>
当在文本框中输入用户名并从用户名文本框中按ENTER键时,将调用LoginCommand,但Property username中的值不会更新。它仍然包含null


仅当焦点丢失时,才会绑定这些值。如何修复此问题?

您无法修复此问题,这是绑定的工作原理(它会在焦点丢失时更新,您是对的)。 但是,解决方案非常简单:您可以只发送textbox的文本作为命令的参数:

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

您无法修复这个问题,这是绑定的工作方式(它会在焦点丢失时更新,您是对的)。 但是,解决方案非常简单:您可以只发送textbox的文本作为命令的参数:

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

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

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

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

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


oops。我需要将用户名和密码都传递给LoginCommand。如何做到这一点?好的,您可以创建一个字符串,比如“login | password”,然后解析内部命令(execute delegate),或者您可以创建一个额外的实体类,比如公共类UserCreds{string login{get;set;}string Pass{get;set;},并将其实例传递到命令中。要从密码文本框中检索文本,您应该在xaml中为此文本框指定一个x:Name属性,并通过代码behindops中的this.nameOfPassTextbox.Text获取它。我需要将用户名和密码都传递给LoginCommand。如何做到这一点?好的,您可以创建一个字符串,比如“login | password”,然后解析内部命令(execute delegate),或者您可以创建一个额外的实体类,比如公共类UserCreds{string login{get;set;}string Pass{get;set;},并将其实例传递到命令中。要从密码文本框中检索文本,您应该在xaml中为此文本框指定一个x:Name属性,并通过代码中的this.nameOfPassTextbox.Text获取该属性。它在Silverlight中不起作用。您所建议的一切在WPF中有效,但在SL中无效。@Jai下面是一个例子,有人创建了一个
AttachedProperty
,以在Silverlight中实现此行为:抱歉。它在Silverlight中不起作用。您所建议的一切在WPF中都有效,但在SL中却不起作用。@Jai下面是一个例子,有人创建了一个
AttachedProperty
,以在Silverlight中实现此行为: