2013-02-08 2 views
0

MVVM 패턴을 기반으로 WPF 응용 프로그램을 작성 중입니다.WPF MVVM - ViewModels 정렬 방법

특정 엔티티의 경우 엔티티 속성이 포함 된 Model, INotifyPropertyChanged를 구현하는 ViewModel이 있고 모델 및 두 개의 뷰의 속성을 노출하는 것과 같은 추가 논리가 있습니다. 하나는 생성 용이고 하나는 엔티티 편집 용입니다.

편집을 위해 하나의 ViewModel을 만들고 뷰를 생성하고 편집시 엔티티 ID를 전달하여 기존 데이터를 검색 할 수 있습니다.

  1. 내가 EntityViewModel이 모델의 속성과를 노출하는 EditEntityViewModel의 속성과 같은 EntityViewModel이 있어야합니다 나는 운동 할 수없는 무엇

    즉,이 상황에서 ViewModels을 구성하는 방법입니다 EditEntityViewModel이 명령과 다른 로직을 처리합니까? 이 경우 엔 EntityViewModel에 뷰의 변경 사항이 통지되지 않는다고 생각합니다.

  2. 서로에 대해 모르는 두 개의 개별 ViewModel을 사용해야합니까?
  3. 모델의 속성을 노출하고 명령 및 기타 논리를 처리하는 페이지에 대한 단일 ViewModel이 있어야합니까?
  4. 다른 건 없나요?

각 뷰마다 하나의 ViewModel이 있어야한다는 것을 알고 있지만 별도의 뷰를 정의하는 방법을 잘 모르겠습니다. 아마도 프레임 워크를 정확히 구현하는 방법에 대해 다소 혼란 스러울 수도 있습니다.

도움을 주셔서 감사합니다.

답변

1

지나치게 복잡하게 만들지 마십시오. 뷰 모델을 모델 관계 1 : 1로 유지하십시오. 결과적으로 뷰 모델은 모델의 모든 CRUD 메소드를 지원하는 메소드를 노출합니다. 또한 두 가지가 아닌 하나의보기를 사용하는 것을 고려하십시오. 그들 사이에는 많은 겹침이 있기 때문에 그것이 합리적이라고 생각합니다. 쓰고 유지할 수업이 줄어들 것입니다. 나는 당신의 목록에있는 # 3이 한 가지 관점의 접근 방법을 사용하는 것이 최선의 선택이라고 생각합니다.

+0

감사합니다. 그것은 의미가 있지만 여러 항목을 표시하는 데 동일한 엔터티의 관찰 가능한 컬렉션을 사용하는 다른보기가 있으면 어떻게됩니까? 지금까지 관찰 가능한 컬렉션 (Of EntityViewModel)을 만들었습니다. 당신이 말한 것을 따라하고이 모델을위한 하나의 ViewModel을 가지고 있다면, 다중 뷰와 관련된 로직을 가질 수 있습니다. 말이 돼? –

+0

필자는 내 뷰 모델을 간결하게 유지하려고 노력하고 많은 논리를 넣지 않습니다. 어쩌면 논리가 공유 데이터 액세스 클래스 또는 이와 유사한 것일 수 있습니까? 서로 다른 뷰 모델에서 관찰 가능한 컬렉션 을 반복해서 사용하는 것이 좋다고 생각합니다. –

+0

그것에 대해 좀 더 생각하고 원래 답변에서 말한 내용을 보드에 가져 가면 지금 어떻게 적용해야하는지 더 잘 이해할 수 있다고 생각합니다. 도와 줘서 고마워 Big Daddy. –