2015-01-29 3 views
0

매우 기본적인 것 같지만 여기에 나와 실용적인 해결책을 알려주십시오. 내 응용 프로그램에서 MVVM 패턴을 사용하고 그것에 꽤 초보자입니다. Tablinks하고 '저장 버튼'뷰 모델간에 개체 상태 유지 MVVM

  • Tablinks 각보기에 대한 링크를해야합니다 -

    나는

    이 StudentView 두 개의 컨트롤을 보유하고 자사의 ViewModel (StudentViewmodel)와 ('StudentView'를 말한다) 부모보기가 (예 : 학업, 개인, 기타). 이것은 두 개의 창이있는 treeview와 같습니다. 왼쪽 창에 제목과 함께 오른쪽 창에 페이지를로드합니다. 각보기에는 해당 속성이있는 고유 한 ViewModel이 있습니다.

  • 사용자는 VM 속성에 바인딩 된 각보기의 값을 편집 할 수 있습니다. 사용자가 'StudentViewModel'에서 저장 버튼을 칠 때
  • 사용자가 각 탭을 가로 질러 이동 VM

    이제
  • 대응의 속성을 업데이트합니다 변경을 허용, 난에서 '저장'메서드를 호출 할 필요가 각 VM (예 : Academic)을 업데이트하고 업데이트 된 속성을 보유한 객체에 대한 참조를 가져 와서 내 컨트롤러로 푸시합니다.

여기서 문제는 매우 간단합니다. AcademicViewModel의 Save 메서드를 호출하면 새 인스턴스가 만들어지고 Tablink를 통해 시작된 수정 된 개체를 가져올 수 없습니다.

이러한 속성을 정적으로 만드는 것 이외의 다른 방법이 있습니까?

미리 감사드립니다.

편집 : 다른보기 모델에서이 Save 메서드를 호출해야하기 때문에. 그것은 정적 메서드가 아닙니다. 그 인스턴스 메서드와 그래서, 나는 그것을 호출하는 개체가 필요합니다.

+0

이 탭 링크는 각보기에 대한 링크를 잘못 표시합니다. MVVM에서는 [데이터 템플릿] (http://wpftutorial.net/DataTemplates.html)을 사용합니다. 'StudentViewModel'에서 자식 viewmodels 클래스에 대한 관찰 가능한 컬렉션이 있어야합니다. 그런 다음 자식 뷰 모델은 'StudentViewModel' 메소드를 호출하여 아이템 추가, 수정, 삭제 등을 수행합니다. 분명히'StudentViewModel' 인스턴스를 자식 뷰에 전달합니다 (또는 어떻게 든 사용할 수 있도록 'static' 속성도 가능). 대화 상자를 사용하려면 [this] (http://stackoverflow.com/q/14811820/1997232)를 참조하십시오. – Sinatr

+1

질문을 편집하여 Save 메서드가 기존 인스턴스를 사용하는 대신 ViewModel의 새 인스턴스를 만드는 이유를 설명하십시오. 그렇게해서는 안됩니다. 코드의 관련 부분을 포함하면 도움이됩니다. – RogerN

답변

0

DI 컨테이너를 사용하면 여기에서 내 문제가 해결되었습니다.