首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >呈现集合集合- ItemsControl

呈现集合集合- ItemsControl
EN

Stack Overflow用户
提问于 2013-07-08 18:11:36
回答 1查看 350关注 0票数 1

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

代码语言:javascript
复制
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; }
}

我将组绑定到一个项目控件,如下所示:

代码语言:javascript
复制
  <ItemsControl  ItemsSource="{Binding Path=Groups}"
       ItemTemplate="{StaticResource GroupTemplate}" >
    </ItemsControl>

我有渲染它们的数据模板。

代码语言:javascript
复制
       <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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-08 18:34:13

在第一个模板中使用另一个ItemsControl:

代码语言:javascript
复制
<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>

并使用模板选择器:

代码语言:javascript
复制
<DataTemplate x:Key="GroupTemplate" DataType="{x:Type my:Group}">
  <ItemsControl ItemsSource="{Binding Contacts}"
                ItemTemplateSelector="{StaticResource yourContactItemSelector}"/>
 </DataTemplate>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17524071

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档