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
列表的第一个列表框,它显示每个TestGroup
的Name
,这与预期的一样工作。对于第二个列表框,我想将其绑定到TestPackages
列表,并让它显示TestGroups
列表中所有TestGroup
的所有TestPackage
Name
。
数据上下文设置在代码后面,如下所示:
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
列表中的第一个TestGroup
的TestPackages
中的所有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
列表中的每个TestGroup
的TestPackages
内的第一个Name
。
我做错了什么,还是错过了什么?
非常感谢您的帮助。非常感谢。
通过XAML,是否可以用TestGroups
中TestPackages
中的所有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>