我有一个如下所示的对象模型:
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 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控件中显示联系人?contacts是每个组中的一个集合,我的视图模型有一个组的集合。更复杂的是,我对不同的联系人有不同的数据模板,我应该使用一个数据模板选择器来选择适当的联系人模板。另外请注意,我在组模板中没有要显示的内容,我只需要显示联系人。
谢谢,-Mike
发布于 2013-07-08 18:34:13
在第一个模板中使用另一个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>https://stackoverflow.com/questions/17524071
复制相似问题