我正在使用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。
如果仅丢失焦点,则绑定值。如何解决这个问题?
答案 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);