2013-07-08 4 views
1

나는 객체 모델 아래와 같이있다 :렌더링 컬렉션 ItemsControl에

public class ViewModel 
{ 
public List<Group> Groups{ get; set; } 
} 

public class Group 
{ 
    public string Name { get; set; } 
    public List<Contact> Contacts { get; set; } 
} 

public class Contact 
{ 
    public string Name { get; set; } 
    public bool IsOnline { get; set; } 
} 

나는이 같은 ItemsControl에에 그룹을 바인딩 해요 :

<ItemsControl ItemsSource="{Binding Path=Groups}" 
     ItemTemplate="{StaticResource GroupTemplate}" > 
    </ItemsControl> 

내가 렌더링 DataTemplate을이 그들.

 <DataTemplate x:Key="GroupTemplate" DataType="{x:Type Group}"> 
     </DataTemplate> 
<DataTemplate x:Key="ContactTemplate" DataType="{x:Type Contact}"> 
<StackPanel> 
<TextBlock Text="{Binding Name}"/> 
</StackPanle> 
     </DataTemplate> 

항목 컨트롤 안에 표시되는 연락처는 어떻게받을 수 있습니까? 연락처는 각 그룹 내의 컬렉션이고 내 viewmodel에는 그룹 모음이 있습니다. 약간 더 복잡하게하기 위해, 나는 다른 연락처에 대해 서로 다른 데이터 템플릿을 가지고 있으며 적절한 연락처 템플릿을 선택하기 위해 datatemplateselector를 사용해야합니다. 또한 그룹 템플릿에 표시 할 내용이 없으므로 연락처 만 표시하면됩니다.

감사합니다, - 마이크

+0

안녕하세요, 저는 문제의 유사한 종류가 있지만 알아낼 수 없어요. –

답변

1

첫 번째 템플릿을 사용하여 다른 ItemsControl에 :

<DataTemplate x:Key="GroupTemplate" DataType="{x:Type my:Group}"> 
    <ItemsControl ItemsSource="{Binding Contacts}"> 
     <ItemsControl.ItemTemplate> 
      <DataTemplate DataType="{x:Type my:Contact}"> 
       <TextBlock Text="{Binding Name}"/> 
      </DataTemplate> 
     </ItemsControl.ItemTemplate> 
    </ItemsControl> 
</DataTemplate> 

그리고 템플릿 선택기 :

<DataTemplate x:Key="GroupTemplate" DataType="{x:Type my:Group}"> 
    <ItemsControl ItemsSource="{Binding Contacts}" 
       ItemTemplateSelector="{StaticResource yourContactItemSelector}"/> 
</DataTemplate> 
+0

안녕하세요, 비슷한 종류의 문제가 있지만 알아낼 수 없습니다. –

+0

비슷한 질문 : 도움을 청합니다. http://stackoverflow.com/questions/24445571/grid-view-or-listview-binding-or-rendering-of-collection-of-collection –