我有一个包含ID,名称和价格的列表视图。每个这样的项目都有一个带有类别的子列表。
所以"对于每个"项目我想显示所有子项目。 它应该是这样的:
但我不知道该怎么做。 这是我的xaml代码。
<ListView.View>
<GridView>
<GridViewColumn Width="140" Header="ID" DisplayMemberBinding="{Binding ID}"/>
<GridViewColumn Width="140" Header="Name" DisplayMemberBinding="{Binding Name}" />
<GridViewColumn Width="300" Header="Price" DisplayMemberBinding="{Binding Price}" />
</GridView>
<!-- ??? -->
<Gridview ItemSource="{Binding Childs}">
我想要添加一个子网格,但我不知道如何。
这是我的班级结构
public class GroupedItem
{
public int ID { get; set; }
public string Name { get; set; }
public float Price { get; set; }
public IEnumerable<Item> Childs { get; set; }
}
有人有想法吗?
答案 0 :(得分:2)
您可以使用datagrid执行此操作:
<w:DataGrid ItemsSource={Binding Source={StaticResource GroupedItemList}}>
<w:DataGrid.RowDetailsTemplate>
<DataTemplate>
<w:DataGrid ItemsSource={Binding Childs }>
</w:DataGrid>
</DataTemplate>
</w:DataGrid.RowDetailsTemplate>
<w:DataGrid.Columns>
<w:DataGridTextColumn Header="Name" DisplayMemberBinding="{Binding Name}" />
<w:DataGridTextColumn Header="Price" DisplayMemberBinding="{Binding Price}" />
</w:DataGrid.Columns>
此外,您可以在codeplex中使用此数据网格,它是免费的
答案 1 :(得分:-1)
您可能希望使用所谓的树网格视图。 DevExpress和Infragistics有很酷的专有实现。但也有自由的灵魂,被诅咒here
答案 2 :(得分:-1)
在listviewitem中,您必须使用其他列表视图构建模板 所以你的第二个listview绑定到
public IEnumerable<Item> Childs { get; set; }