MVVM에서 바인딩된 Model이 변경중일 때 Commit 또는 Rollback 방식

질문입니다.

MVVM에서는 UI 상태와 Model 상태를 동기화 해주는 바인딩 메커니즘이 있기 때문에 UI 상태를 수동으로 갱신하지 않아도 되는 편리한 점이 있습니다.

하지만 Model이 변경되는 중에 UI에 반영되지 않았음 하는 상황도 발생하는데요, 대표적인 예가 정보를 수정하는 중입니다. 이것을 좀 더 시각적으로 이해할 수 있도록 간단한 도식을 만들어 봤습니다.

image

오른쪽 상단의 Chaning Status중일 때는 ViewPage 1에 바인딩 된 Model이 상태가 수정 중일 때 수정중인 내용이 반영되지 않고 최종 수정 완료하여 Commit했을 때 반영하고 싶습니다.

(Commit 했을 때 각 상태를 히스토리로 남기는 Status 2, Status 3, Status 4 형태도 표현해 보았습니다.)

이런 구조를 우아하게 처리하는 방법론을 알고 싶습니다.

제가 지금까지 사용한 방법은 이렇습니다.

  1. 편집 상태가 되면 개체를 복사하여 편집한다.
  2. 편집을 완료(Commit)하면 복사한 개체를 원 개체에 반영한다.
  3. 편집을 취소(Rollback)하면 원 개체에 반영하지 않는다.
  4. Commit 히스토리는 별도로 관리한다.

여러분은 어떻게 처리하세요?

5개의 좋아요

이 것으로 해결되지 않을까요?

WPF, Windows Forms 는 되는데, MAUI, Xamarin 은 아직인 듯합니다.

3개의 좋아요

view에서는 DataTriggerBehavior를 이용해서 vm prop을 바인딩하고,
value에 따른 뷰 시나리오를 구성하면 되지 않을까 싶네요~

참고차 공유 드려요.

2개의 좋아요