2011-02-22 3 views
0

여기에있는 것이 있습니다 :MVVM - 중첩 목록 및보기 모델과 관련된 올바른 트랙은 무엇입니까?

저는 GetHistoryLog보기,보기 모델 및 모델이 있습니다.

은 내가 버전 항목을 얻기에 전문 다른 뷰를 가지고 ObservableCollection<ChangesetEntity>

를 가리키는 목록 상자, 그래서 그것은 VersionedItemView, 해당 뷰 - 모델과 그 모델입니다.

이제 GetHistoryLog보기에서 변경 집합 내의 특정 버전 항목에 액세스하려고합니다. 각 변경 집합에는 여러 버전 항목이있을 수 있습니다. 두 가지보기 모델을 "연결"하는 가장 좋은 방법은 무엇입니까?

모든 변경 집합과 하위 파일을 포함하는 트리보기와 모든 변경 집합을 포함하는 단일 목록보기, 변경 집합을 클릭하고 수정 된 파일을 볼 수있는 옵션이 있습니다.

기본적으로 항목 목록 안에있는 항목 목록에 액세스하고 동시에이 목록의 특정 색인에 액세스 할 수있는 옵션이 있습니다.

다른보기 모델을 만들어야합니까? 코드에서 혼란없이 최상의 솔루션은 무엇입니까?

은 내가 ADV에서

감사 충분히 명확했다 바랍니다.!

편집 : 또한 컨트롤의 DataContext를 목록의 특정 항목으로 동적으로 설정할 수 있습니까?

편집 : 더 명확하게 설명하려고 :

HistoryLogEntryModel -> GetHistoryLogVM -> GetHistoryLogUserControl

VersionedItemLogModel -> GetVersionedItemsLogVM -> GetVersionedItemsLogUserControl

내가 원하는 것은 :

HistoryLogEntryModel + VersionedItemLogModel -> ? -> GetCompleteHistoryLogWithVersionedItemsUserControl (짧은 이름, 그러나 다만 이해)

+0

도메인에 대한보다 간결한 설명을 제공 할 수 있습니까? imho를 사용하면 모델을 잘 이해하면 M-V-VM 문제를 쉽게 처리 할 수 ​​있습니다. –

+0

제공하신 모델에 대한 추가 설명이 내가 원하는 것을 정확하게 설명하지 않습니다.HistoryLogEntry 개체가있는 것 같습니다. ChangeSet 객체 (컬렉션?). ChangeSet은 _n_ VersionedItemLog 객체 (다른 컬렉션)를 포함합니다. 이것은 VM과 Views/UserControls의 혼란없이 도메인 모델을 설명합니다. –

+0

만약 내가 충분히 명확하지 않은 경우 미안 해요. 네, 내 도메인 모델을 설명합니다 : HistoryLogEntry는 ChangeSet 객체의 컬렉션을 포함합니다. 각 변경 집합에는 버전이있는 항목이 n 개 있습니다. –

답변

0

귀하의 설명을 바탕으로, 나는 당신이 더 필요하다고 생각하지 않습니다. 이미 설명하고있는 상위 하위 관계를 지원할 도메인의 매우 계층적인 개체 그래프가 이미 있습니다.

바인딩 및 객체 표현에 대한 접근 방식을 개선해야한다고 생각합니다. 여기에 당신을 도울 수있는 good post from MSDN magazine이 있고 WPF TreeView와 함께 사용하기 위해 Hierarchical Data Templates을 다루는 데 대한 조언도 있습니다.

당신은 동적으로 다른 컨트롤 (예를 들어옵니다), 다음과 같은 바인딩 구문을 사용할 수의 selectedItem을 기반으로 컨트롤의 DataContext에 변경 있음을 결합하고 싶은 경우 다음

DataContext="{Binding ElementName=sourceElementNameHere, Path=SelectedItem, 
    Mode=OneWay}" 

다른입니다 good MSDN article on binding in WPF에 링크하십시오.

관련 문제