2011-09-10 10 views
0

MVVM 디자인/이해 문제를 도와주십시오.MVVM 디자인이 적용된 데이터 기반 Windows 전화 파노라마

에서 MainPage.xaml 몸 :

<views:PanoramaView/> 

DataContext is set via MVVM Light view-model locator to a static MainViewModel class instance. 

조회수/PanoramaView.xaml 몸 :

<UserControl.DataContext> 
     <ViewModels:PanoramaViewModel/> 
</UserControl.DataContext> 

<StackPanel x:Name="LayoutRoot"> 
     <controls:Panorama Background="{Binding PanoramaBackgroundBrush}" 
          ItemsSource="{Binding PanoramaItems}" 
          ItemTemplate="{StaticResource panoramaItemTemplate}" 
          /> 
</StackPanel> 

우리는 다음과 같은 UI 구조의 윈도우 폰 응용 프로그램을 감안할 때

그 시점에서 나는 질문을 우연히 만났습니다 - 어떤 sh 모든 PanoramaItem이 다른 사용자 컨트롤로 구성되기를 원한다면 어떻게합니까? 파노라마 항목 템플릿을 정의하면 모든 항목이 동일하게 처리됩니다. 그러나 제 의도는 서버적이고 압도적으로 다른 파노라마 항목을 갖는 것입니다. 주어진 시간에 어떤 파노라마 항목을 표시 할지를 제어 할 수있는 수업 (아마도 PanoramaViewModel)을 갖고 싶었습니다.

그래서 MVVM을 고수하면서도 새로운 뷰 (파노라마 항목)를 인스턴스화하고이를 PanoramaViewModel 컬렉션 인 PanoramaItems 컬렉션에 삽입 할 수있는 방법이 있어야합니다. 어디에서 어떻게 할 수 있습니까?

+0

MVVM과 관련이 없습니다. –

+0

Panorama 컨트롤의 Items 컬렉션에있는 뷰 모델 유형을 기반으로 다른 뷰를 표시해야하는 경우 MVVM과 관련이 있다고 가정했습니다. 그러나 내가 말했듯이, 그러한 요구 사항을 해결하는 방법을 알지 못하므로 정확할 수 있으며이 질문은 MVVM 범위에서 벗어납니다. –

+0

감사합니다. 나는 그것에 대해 연구 중이다. –

답변

1

당신은 다른 뷰 모델 클래스 유형 렌더링되는 뷰 항목에 대한보기 세터와 데이터 템플릿을 정의하는 리소스 키를 정의해야하고, 공통 기본 클래스 (PanoramaViewModel, 즉)

0

에서 VM 클래스를 파생 WPF에서 디자인 문제를 해결하려면 DataTemplateSelector을 사용해야합니다. Windows Phone 응용 프로그램은 Silverlight에 가깝기 때문에 직접 구현할 수 있습니다. 좋은 예가 this 기사와 this silverlight.net 포럼 스레드에 있습니다.