2012-07-03 1 views
0
<Grid> 
     <ItemsControl ItemsSource="{Binding ScreenViewModelCollection}"> 
      <ItemsControl.Resources> 
       <DataTemplate DataType="{x:Type redScreenView:RedScreenView}"> 
        <Grid> 
         <redScreenView:RedScreenView/> 
        </Grid> 
       </DataTemplate> 

       <DataTemplate DataType="{x:Type greenScreenView:GreenScreenView}"> 
        <Grid> 
         <greenScreenView:GreenScreenView/> 
        </Grid> 
       </DataTemplate> 

      </ItemsControl.Resources> 
     </ItemsControl> 

DataTemplate을이보기 그리기 있지만, 각 그것이 컬렉션

대신 자사의 뷰 모델에 대한 도면 뷰에서 발생하는 입력의 ViewModel에 대한 유형 이름을 인쇄하지, 그것은보기가 속한 네임 스페이스를 인쇄! 그러나 ItemTemplate을 사용하면 그 중 하나만 사용할 수 있습니다. 그리고 ItemTemplate을 하나 개 이상의 내용 :(내가 redScreenView/greenScreenView 네임 스페이스, ScreenViewModelCollection의 유형, ItemsControl.ItemTemplate에 대한 XAML에 대한 정의를 그리워

+1

Views이 될 수 있도록해야합니다. 해당 유형으로 질문을 업데이트하십시오. –

+0

@invisible thanks .. 어떻게 대응하는 템플릿을 추가해야합니까? 그것은 내가 나타납니다 –

답변

2

귀하의 DataTemplates은 에 ViewModels이 포함 된 것으로 의심되는 반면 Views에 해당합니다.

당신은 당신이 해당 템플릿을 갖고 있지 않은 유형 이름의 DataType 특성이 네임 스페이스 아니다 ViewModels 대신

<DataTemplate DataType="{x:Type myViewModels:RedScreenViewModel}"> 
    <Grid> 
     <redScreenView:RedScreenView/> 
    </Grid> 
</DataTemplate> 

<DataTemplate DataType="{x:Type myViewModels:GreenScreenViewModel}"> 
    <Grid> 
     <greenScreenView:GreenScreenView/> 
    </Grid> 
</DataTemplate> 
+0

에서 만나는 ViewModel 객체의 각 유형에 대한 네임 스페이스를 여전히 인쇄하고 있습니다. 감사합니다 :) –

0

수 없습니다 - 그래서 난 그냥 가정

편집 : PLS보고 당신의 XAML 난 당신이 거기에 약간의 오타가 있다고 생각. 당신의 DataTemplates의 데이터 형식는 뷰 모델이어야한다. DataTemplate을 물론보기의 내용.

을 그럼에도 불구하고 지역 네임 스페이스를 정의하고에 있어야 귀하의 창/사용자 정의 컨트롤 예 :

<UserControl xmlns:local="clr-namespace:MyWpfApplication1.MyTest.ViewModels" 
       xmlns:views="clr-namespace:MyWpfApplication1.Controls.Views" 


    <ItemsControl ItemsSource="{Binding ScreenViewModelCollection}"> 
     <ItemsControl.Resources> 
      <DataTemplate DataType="{x:Type local:RedScreenViewModel}"> 
       <Grid> 
        <views:RedScreenView/> 
       </Grid> 
      </DataTemplate> 
      <DataTemplate DataType="{x:Type local:GreenScreenViewModel}"> 
       <Grid> 
        <views:GreenScreenView/> 
       </Grid> 
      </DataTemplate> 
     </ItemsControl.Resources> 
     <ItemsControl.ItemTemplate> 
      <DataTemplate> 
       <ContentPresenter Content="{Binding}"/> 
      </DataTemplate> 
     </ItemsControl.ItemTemplate> 
    </ItemsControl> 

이 항목 템플릿은 어떻게 작동합니까?

+0

불행히도하지 않습니다. Collection –