Silverlight中的列表框的DataTemplate可以是列表的集合

时间:2009-07-12 07:48:19

标签: silverlight listbox datatemplate

我有一个可观察集合的数组,我想在一个列表框中显示所有这些集合。每个集合中的数据属于同一类型,并且已根据特定类别进行分隔。

所以我的问题是,列表框的DataTemplate是否可以包含Listbox?

1 个答案:

答案 0 :(得分:1)

是的,例如,Xaml:

<UserControl x:Class="SilverlightApplication1.Page"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Width="400" Height="300">
    <Grid x:Name="LayoutRoot" Background="White">
        <ListBox ItemsSource="{Binding }">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <StackPanel >
                        <TextBlock Text="{Binding Name}" />
                        <ListBox ItemsSource="{Binding InnerList}">
                            <TextBlock Text="{Binding }" />
                        </ListBox>
                    </StackPanel>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>
    </Grid>
</UserControl>

守则:

using System.Collections.Generic;
using System.Windows.Controls;

namespace SilverlightApplication1
{
    public partial class Page : UserControl
    {
        public Page()
        {
            InitializeComponent();
            this.DataContext = new List<Data>() 
            { 
                new Data(){Name = "First"},
                new Data(){Name = "Second"},
                new Data(){Name = "Third"},
                new Data(){Name = "FourthWithDifferentData", InnerList=new List<string>(){"a", "b", "c"}}
            };
        }
    }
}

public class Data
{
    public List<string> InnerList { get; set; }
    public string Name { get; set; }
    public Data()
    {
        InnerList = new List<string>(){"String1", "String2", "String3"};
    }
}