이것은 더 많은 개념적 질문입니다. 도움이된다면 MVVM 패턴에 해당한다고 말할 수 있습니다. WPF 바인딩에 대한 내 연구에서이 문제가 해결 된 것을 본 적이 없습니다.바인딩을 사용하여 WPF에서 업데이트 취소
바인딩을 통해 뷰 모델에 연결된 요소가있는 창이 있고 사용자가 레코드를 업데이트하지만 저장하기 전에 업데이트를 취소하기로 결정한 경우 변경 사항을 되돌리기위한 가장 좋은 방법은 무엇이라고 생각하십니까? "는 VM과시 사본에 바인딩 편집 팝업 메인 화면을 업데이트하는 사용자를 허용하는 대신
- 번째 창을 가지고
나는 가능성의 몇 가지를 생각할 수 저장 "을 선택하면 해당 데이터가 원래 VM에 기록 된 다음 모델로 다시 업데이트됩니다. 저장 기능의 메모리 사용량과 복잡성이 증가합니다.
- 원본 VM 개체의 "원시"복사본을 만들고 "취소"할 때 해당 복사본을 원본 위에 다시 쓰십시오. 복사본을 삭제할 수 있습니다. 메모리 사용 및 취소 기능이 복잡해집니다.
- VM에서 생성시 변경 될 수 있고 "취소"시 변경 될 수있는 각 요소의 복사본을 생성 한 후 변경된 값 위에 다시 값을 씁니다. VM의 크기와 복잡성이 증가합니다.
- "취소"를 실행하면 VM이 데이터 소스에 도달하여 레코드를 다시로드합니다. 네트워크 트래픽과 DB 액세스 트래픽을 유발하고 디스플레이가 원래 상태로 다시 업데이트되는 데 걸리는 시간을 지연시킬 수 있습니다. 또한 VM이 다른 프로세스에서 업데이트되고 이러한 "외부"업데이트가 삭제되지 않아야하는 경우 문제가 발생할 수 있습니다.
누구나이 문제에 대한 더 나은 해결책을 생각하거나이 "자동"을 처리하는 WPF 내의 일부 모호한 기능을 알고 있습니까?
리플렉션을 사용하여 멋진 속성과 간단한 속성으로 표시된 필드를 자동으로 저장/복원하는 기념일 구현을 사용합니다. –
지루한 복사 코드를 작성할 필요가 없으므로 내 ViewModels을 생성하고 반사 느림 –
반영의 가장 느린 부분은 유형별로 캐시 할 수있는 속성 정의를 얻는 것입니다. 그래도 자동 생성은 좋은 옵션입니다. –