Wpf 呈现集合集合-ItemsControl

Wpf 呈现集合集合-ItemsControl,wpf,Wpf,我有一个如下所示的对象模型: 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

我有一个如下所示的对象模型:

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; }
}
公共类视图模型
{
公共列表组{get;set;}
}
公共课组
{
公共字符串名称{get;set;}
公共列表联系人{get;set;}
}
公共类联系人
{
公共字符串名称{get;set;}
公共bool IsOnline{get;set;}
}
我将这些组绑定到一个itemscontrol,如下所示:

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

我有用于呈现它们的数据模板

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

如何在items控件中显示联系人?联系人是每个组中的一个集合,my viewmodel有一个组集合。更复杂的是,对于不同的联系人,我有不同的datatemplates,我应该使用datatemplateselector来选择合适的联系人模板。另外,请注意,我没有什么要显示在组模板中,我只需要显示联系人

谢谢,
-Mike

在第一个模板中使用另一个Items控件:

<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>

在第一个模板中使用另一个Items控件:

<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>


Hi,我有类似的问题,但我无法解决。simmilar ques:帮助我了解Hi,我有类似的问题,但我无法了解。simmilar ques:帮助我了解Hi,我有类似的问题,但我无法了解。Hi,我有类似的问题,但我无法了解。