我有一组可观察的集合,我想在一个列表框中显示所有这些集合。每个集合中的数据都属于同一类型,并且已根据特定类别进行了分离。
所以我的问题是,列表框的 DataTemplate 是否可以包含列表框?
我有一组可观察的集合,我想在一个列表框中显示所有这些集合。每个集合中的数据都属于同一类型,并且已根据特定类别进行了分离。
所以我的问题是,列表框的 DataTemplate 是否可以包含列表框?
是的,例如,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"};
}
}