2012-09-05 2 views
1

Windows 8 스타일 앱에서 여러 다른 하위보기로 구성된보기 (또는 페이지)가 있습니다. 다른보기로 구성된보기 용 DataTemplate

이러한 각각의

는 관련 뷰 모델을 가지고 있으며, 그들은 내가 다음, 다시,를 통해 정의와 경계를 다른 하위 뷰들로 구성되어있는 뷰 2를 가지고있는 MVVM 빛 ViewModelLocator

를 통해 정의와 경계하고 있습니다 MVVM Light ViewModelLocator

내가하고 싶은 일은 View 및 View2 컨트롤의 인스턴스를 MasterViewModel의 List에 배치 한 다음이 목록을 MasterView 파일의 GridView에 바인딩하는 것입니다.

단일 인스턴스를 목록에 배치하지 않고 작성하는 경우 View 및 View2의 각 인스턴스를 렌더링해야합니다.

내가 시도한 것은 모든보기가이 유형의 인스턴스이므로 페이지 목록을 만들고 GridView를 바인딩하는 것이지만 GridView를 실행하면 GridView가 비어있는 것처럼 보입니다.

DataTemplateSelector (http://www.wiredprairie.us/blog/index.php/archives/1705)를 사용하고 MasterView 목록의 각 항목에 DataTemplate을 적용하는 예제를 보았습니다.

나는이 일을 이해하지만, 다른보기로 구성된보기에 대한 DataTemplate을 만드는 방법을 이해하지 못합니다.

나는 뭔가를 간과하고 있다고 확신합니다. 어떤 도움을 주셔서 감사합니다 :

답변

1

일반적으로이 경우 뷰를 사용하지 않고 ViewModels 집합에 목록을 바인딩하고 데이터 템플릿 선택기 (또는 사용자의 취향에 따라 ValueConverter)를 선택하면 뷰 모델에 적합한 뷰.

그래서 ViewA 경우 ViewModelA : ISubViewViewModel를 사용하고, ViewB 다음 주 ViewModel가 내 ViewModelA & ViewModelB의 집합을 가진 List<ISubViewModel> 포함됩니다 ViewModelB : ISubViewModel를 사용합니다. 기본보기의 ListBoxList<ISubViewModel>에 바인딩되고 데이터 템플릿 선택기/ ValueConverterViewModelA의 경우 ViewA을, ViewModelB의 경우 ViewB을 해결합니다.

호프는 의미가 있습니다. 문제를 설명하는 것처럼 솔루션을 설명하는 것이 어렵습니다. :)

+0

이것이 실제로 의미가 있지만 내 생각으로는 왜 ViewModels 컬렉션이 필요한가요? 이것들은 인스턴스화되지 않고 ioc 컨테이너로부터 참조 되는가? (나는 그것과 함께 배송되는 mvvmlight와 simpleioc을 사용하고있다.) 나는 연극을하고 내가 일하는 것을 얻을 수 있는지 알아볼 것이다. 당신의 답변에 감사드립니다! – lookitskris

+0

조금 놀고 난 후에 나는 당신이 제안한 방법을 사용하여이 작업을했습니다. 감사! – lookitskris

관련 문제