2010-06-19 3 views
0

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

Спасибо Walter

ответ

0

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

+0

Еще одна вещь, чтобы сохранить текущее состояние объекта из команды в классе ViewModel, вам не нужны ссылки на элементы управления TextBox. Вы можете напрямую обращаться к свойствам из класса ViewModel, потому что представление фактически привязано к ViewModel. – decyclone

 Смежные вопросы

  • Нет связанных вопросов^_^