данные не связаны при нажатии клавиши ввода - PullRequest
1 голос
/ 10 августа 2011

Я использую шаблон Silverlight & MVVM.

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

В этом я привязал TextBox к свойству Username, и когда нажата клавиша Enter, я выполняю команду LoginCommand в View Model.

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

Когда имя пользователя вводится в TextBox и нажимается клавиша ENTER из TextBox имени пользователя, вызывается команда LoginCommand, но значение не обновляется при правильном имени пользователя. Он по-прежнему содержит ноль.

Значения связаны, если только потерян фокус. Как это исправить?

Ответы [ 2 ]

1 голос
/ 10 августа 2011

Изменение UpdateSourceTrigger=PropertyChanged в Связке. По умолчанию TextBox обновляет только свое связанное значение на LostFocus. Если установить значение PropertyChanged, оно будет обновлять привязанное значение при каждом изменении свойства.

<TextBox Name="UserNameText" 
         Text="{Binding Path=Username, UpdateSourceTrigger=PropertyChanged}" />
0 голосов
/ 10 августа 2011

Вы не можете это исправить, так работает привязка (она обновляется при потере фокуса, вы правы). Однако решение довольно простое: вы можете просто отправить текстовое поле в качестве параметра команды:

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