我想在wpf中使用ListBox内的ListBox,这就是我想要做的事情
public ObservableCollection<Users> List1DS { get; set; }
public ObservableCollection<Users> List2DS { get; set; }
public ObservableCollection<Users> List3DS { get; set; }
public class Users
{
public int UserID { get; set; }
public string UserName { get; set; }
public string FirstName { get; set; }
}
//This will have List1DS,List2DS and List3DS
public ObservableCollection<List<Users>> MainDS { get; set; }
XAML:
<ListBox Margin="25,74,835,-194" x:Name="userslst" ItemsSource="{Binding MainDS}">
<ListBox ItemsSource="{Binding List1DS}">
</ListBox>
</ListBox>
在MainDS中可以有零个或多个项目,我想知道在WPF中这样的事情是可能的吗? 这样做的另一种方法是什么?
答案 0 :(得分:0)
是的,这可以通过将列表框放在顶部列表框的ItemTemplate中并绑定它来完成。
但是你可能不想这样做并去寻找树视图/分层模板结构,因为这已经是你想要实现的了。
答案 1 :(得分:0)
确实可以显示集合的集合,并且可能比您想象的更容易。您只需为显示第二级项目的第一级项目提供ItemTemplate
。尝试这样的事情:
<ListBox ItemsSource="{Binding MainDS}">
<ListBox.ItemTemplate>
<DataTemplate> <!-- Define top level items -->
<ListBox ItemsSource="{Binding}"> <!-- Bind to inner collection -->
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal" />
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.ItemTemplate>
<DataTemplate> <!-- Define second level items -->
<TextBlock Text="{Binding Name}" />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>