Сохранение в форме ввода данных WPF - PullRequest
0 голосов
/ 12 января 2012

У меня есть приложение WPF MVVM, которое содержит форму ввода данных с несколькими текстовыми полями.Я заметил, что когда пользователь находится в текстовом поле и вносит изменение, объект Context не знает, что изменение было сделано, пока пользователь не ушел из этого текстового поля.Как только пользователь выходит из текстового поля, все работает нормально.Но я хотел бы знать, что изменение было внесено без необходимости вкладки пользователя в текстовое поле.

Возможно ли это?

Моя форма работает так, что кнопки «Сохранить» и «Отмена» связаны сICommands.Эти команды имеют методы «CanSave» и «CanCancel», которые проверяют, изменилось ли EntityState в любом случае, но позволяют кнопкам включаться.Это прекрасно работает, но пользователь должен нажать на текстовое поле, чтобы все заработало.

Как я могу сделать это, если пользователь не нажал на измененное текстовое поле?

Ответы [ 2 ]

1 голос
/ 12 января 2012

Вам необходимо изменить свойство триггера источника обновлений, чтобы пометить изменения в вашей ViewModel

Например

<TextBox Text={Binding Path=MyProperty,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}></TextBox>

Не забывайте, что My Property должен запускать свойство, измененное из ViweModel

1 голос
/ 12 января 2012

Установите для направления привязки (Mode) TextBox значение TwoWay вместо значения по умолчанию и установите для UpdateSourceTrigger значение PropertyChanged вместо значения по умолчанию ... например, так:

<TextBox x:Name="txtPersonLastname" Text="{Binding Person.LastName, Mode=TwoWay, NotifyOnValidationError=True, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True, ValidatesOnExceptions=True}" />

(у меня есть некоторые дополнительныеатрибуты для проверки в этом отрывке.)

Ключевым отличием является PropertyChanged, который обновит ваше свойство поддержки в ViewModel.Когда пользователь вводит что-либо в TextBox, событие PropertyChanged будет запускаться, и, в свою очередь, должно вызывать ваши CanSave, подпрограммы Save.

В Blend это должно выглядеть так:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...