WPF列表框绑定到对象的子属性列表


我创建了一个名为TestNumber的类,其中包含public List<TestGroup> TestGroups {get; set;}。TestGroup类包含public List<TestPackage> TestPackages {get; set;}public property string Name {get; set;}。TestPackage类包含public string Name {get; set;}

我有两个列表框。绑定到TestGroups列表的第一个列表框,它显示每个TestGroupName,这与预期的一样工作。对于第二个列表框,我想将其绑定到TestPackages列表,并让它显示TestGroups列表中所有TestGroup的所有TestPackageName

数据上下文设置在代码后面,如下所示:

this.DataContext = TestNumber;

我尝试了以下代码来绑定第二个列表框:

<ListBox Grid.Row="1"
ItemsSource="{Binding Path=TestGroups/TestPackages}">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=Name}" />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>

这仅显示TestGroups列表中的第一个TestGroupTestPackages中的所有Name

<ListBox ItemsSource="{Binding Path=TestGroups}"
Grid.Column="4"
Grid.Row="1">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=TestPackages/Name}" />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>

这仅显示TestGroups列表中的每个TestGroupTestPackages内的第一个Name

我做错了什么,还是错过了什么?

非常感谢您的帮助。非常感谢。

通过XAML,是否可以用TestGroupsTestPackages中的所有Name填充第二个列表框?嵌套的ListBox是通过XAML实现这一点的唯一方法吗(除了其他控件(?

如果要在单个ListBox中显示所有TestPackages,则必须定义一个在某处实际返回所有TestPackages的属性。

给定您当前的设置,您可以使用嵌套的ListBox:显示每个TestGroup的所有TestPackages

<ListBox ItemsSource="{Binding TestGroups}">
<ListBox.ItemTemplate>
<DataTemplate>
<ListBox ItemsSource="{Binding TestPackages}">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}" />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>

最新更新