Вы, наверное, ищете BufferedValueModel
:
ValueModel, которая оборачивает другую ValueModel, тему и задерживает изменения значения темы. Возвращает значение субъекта, пока значение не будет установлено. Буферизованное значение не записывается субъекту, пока канал триггера не изменится на Boolean.TRUE.
PresentationModel.getBufferedValue()
полезно для их создания.
Однако, как правило, я бы избегал буферизованных моделей, потому что это добавляет дополнительную сложность к архитектурной модели, которая уже довольно сложна. Кроме того, это не очень хорошо работает с проверкой модели. Я бы порекомендовал оставить поведение автоматической фиксации привязок в одиночку и структурировать ваш код вокруг него.
Карстен Ленцш при буферизации :
Я лично предпочитаю буферизацию путем копирования графа объекта домена.
Во многих приложениях доменные объекты на клиенте
копии объектов конечного домена. В этом случае вы можете работать
на объектах клиентского домена без дальнейшей буферизации.
Сбросить все изменения, сделанные на объектах клиентского домена
Вы можете просто перезагрузить их с задней части.
В любом случае, если вы хотите создать буфер на уровне Presentation Model (PM),
Вы должны сделать это доступным в личке. Логика вашей презентации
затем работает в состоянии буферизации, а не в состоянии домена.
Вы можете найти пример в руководстве по связыванию. Увидеть
BufferedAlbumPresentationModel. Это демонстрирует, как
слушать изменения в буферизованном «классическом» свойстве
обновить буферизованное свойство "composerEnabled".
Обратите внимание, что BufferedClassicalChangeHandler копирует
поведение реализовано в альбоме # setClassical, который устанавливает
композитор к нулю, если альбом не классический.
Учебное пособие можно найти в старых пакетах в архиве загрузок JGoodies .