WPF MVVM UpdateSourceTrigger = Excplict

У меня есть элемент управления контентом в моем Wpf-приложении (MVVM), который привязан к объекту и отображает свойства объектов в текстовых полях, поэтому пользователь может редактировать значения свойств. Я хочу реализовать функциональность отмены / повтора с помощью шаблона команд GoF. Для этого мне нужна точка, в которой я могу создать команду и установить ее в свой неуправляемый. Моя идея заключалась в том, чтобы добавить кнопку отправки. Когда кнопка нажата, я обновляю источники текстовых полей (мои свойства) и создаю свой командный объект, чтобы сделать изменения невозможными (сохраняя старое состояние объекта и новое состояние). Но: - Для использования кнопки отправки мне нужно установить UpdateSourceTrigger текстовых полей на Explicit. Если я хочу обновить свои источники, мне нужно ссылаться на элементы управления в моем представлении, что, насколько я понял, плохо. Как я могу это сделать? С MVVM мне нужно создать команду (команда WPF, а не моя команда отмены повтора) для SubmitButton, но я не вижу, как применить изменения к свойствам из этой команды без ссылки на текстовые поля (далее они создаются с помощью шаблонов данных) .

Спасибо Уолтер


person Walter    schedule 19.06.2010    source источник


Ответы (1)


Я предполагаю, что ваши TextBox элементы управления привязаны к свойствам в классе ViewModel. Если вы привяжете свою кнопку отправки к ViewModel Command, который, в свою очередь, может добавить вам соответствующую команду Command Pattern Collection, а также изменить некоторые свойства ViewModel, значения в элементах управления Textbox также будут обновлены. Теперь, чтобы Textbox обновлял свое значение, когда значение свойства, к которому он привязан, изменяется, класс ViewModel должен реализовать интерфейс INotifyPropertyChanged и вызвать событие PropertyChanged из установщика свойств с именем этого свойства в качестве аргумента.

person decyclone    schedule 19.06.2010
comment
Еще одна вещь: чтобы сохранить текущее состояние объекта из команды в классе ViewModel, вам не нужны ссылки на элементы управления TextBox. Вы можете получить прямой доступ к свойствам из самого класса ViewModel, потому что View фактически привязан к ViewModel. - person decyclone; 19.06.2010