2011-03-11 6 views
1

내 응용 프로그램은 MDI Winform 응용 프로그램입니다. MVP 패턴 및 데이터 바인딩과 관련된 몇 가지 문제점이 있습니다.MVP 감독 컨트롤러, 데이터 바인딩 및 실행 취소/다시 실행

모든 양식은 모덜리스입니다. 필드를 수정하거나 콤보 상자에서 선택한 항목을 변경하면 모델을 수정하고 모든 양식을 모델과 즉시 동기화 할 수 있습니다. 데이터 바인딩은 이것을 단순한 필드에 완벽하게 허용하고 복잡한 작업의 경우 발표자를 사용하여보기를 "수동으로"업데이트합니다.

하지만 그림에 실행 취소/다시 실행 메커니즘을 넣는 방법은 무엇입니까? 의미 : "실행 취소"단추를 클릭하여 텍스트 필드의 변경 사항을 되돌리고 싶습니다.

나는 명령 패턴을 적용하려고 시도하지만 데이터 바인딩 메커니즘에 "명령"메커니즘을 도입 할 수있는 곳이 없다. 나는 바인딩 메카니즘을 완전히 포기할 것을 고려 중이다.

바인딩에 대한 기사가 너무 많았지 만 실행 취소/다시 실행을위한 해결책이 실제로 공개되지 않았습니다.

실행 취소/다시 실행과 데이터 바인딩이 실제로 호환되지 않습니까?

+1

아마도이 방법이 도움이 될 수 있습니다. http://weblogs.asp.net/fbouma/archive/2009/03/20/the-undo-redo-paradox.aspx – epitka

답변

0

실행 취소 스택을 관리하려면 Monitored Undo Framework (http://muf.codeplex.com/ 또는 NuGet)와 같은 라이브러리를 사용할 수 있습니다. 그것은 Command 패턴을 필요로하지 않습니다. 대신 모델의 변경 사항을 모니터링 한 다음 변경 사항을 실행 취소 스택으로 푸시합니다. 변경 실행 취소는 이전 값을 스택에서 당겨 다시 모델로 푸시하는 것을 의미합니다.

라이브러리는 WPF 용으로 작성되었지만 바인딩을 올바르게 설정하면 WinForms에서도 작동해야합니다. 또한 모델에서 콜백을 후크하여 실행 취소/다시 실행 작업으로 인해 값이 변경된시기를 알 수 있습니다.

라이브러리에는 설명서, 단위 테스트 및 사용 방법을 보여주는 몇 가지 샘플 링크가 있습니다.