Контроллер контроля MVP, привязки данных и отмена / возврат

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

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

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

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

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

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


person flamandier    schedule 11.03.2011    source источник
comment
Возможно, это поможет вам weblogs.asp .net / fbouma / archive / 20.03.2009 /   -  person epitka    schedule 11.03.2011


Ответы (1)


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

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

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

person NathanAW    schedule 01.07.2011