Контролирующий контроллер MVP, привязки данных и отмена / повтор - PullRequest
1 голос
/ 11 марта 2011

Мое приложение является приложением MDI Winform. Я столкнулся с некоторыми проблемами, связанными с шаблоном MVP и привязками данных.

Все мои формы немодальны. Когда я изменяю поле или изменяю выбранный элемент в выпадающем списке, я хочу изменить модель, и я хочу, чтобы все формы (ы) немедленно синхронизировались с моделью. Привязка данных идеально подходит для простых полей, а для сложных операций я использую Presenter для обновления представления «вручную».

Но, как поставить механизмы отмены / повтора на картинке? Я имею в виду: я хочу отменить изменения, внесенные в текстовое поле, нажав кнопку «Отменить».

Я пытаюсь применить шаблон команды, но, похоже, нет места для введения механизма «команда» в механизме привязки данных. Я настолько застрял в этом, что теперь я собираюсь полностью отказаться от механизмов привязки.

Я вижу так много статей о связывании, но никакого решения отменить / повторить действительно нет.

Действительно ли отмена / повтор и привязка данных несовместимы?

1 Ответ

0 голосов
/ 01 июля 2011

Вы можете использовать библиотеку, такую ​​как Monitored Undo Framework (http://muf.codeplex.com/ или в NuGet), для управления стеком отмены.Для этого не требуется шаблон Command.Вместо этого вы отслеживаете изменения в вашей модели и затем помещаете эти изменения в стек отмены.Отменить изменение означает извлечь предыдущее значение из стека и вернуть его обратно в модель.

Библиотека была написана для WPF, но если вы правильно настроили привязки, она также должна работать для WinForms.Кроме того, вы можете перехватить обратные вызовы в модели, чтобы вы знали, когда значение изменилось из-за операции отмены / возврата.

В библиотеке есть документация, модульные тесты и ссылки на некоторые примеры, показывающие, как его использовать..

...