网格中的ListView网格

时间:2015-10-01 07:52:19

标签: c# wpf xaml listview data-binding

我有一个包含ID,名称和价格的列表视图。每个这样的项目都有一个带有类别的子列表。

所以"对于每个"项目我想显示所有子项目。 它应该是这样的:

Example

但我不知道该怎么做。 这是我的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; }
}

有人有想法吗?

3 个答案:

答案 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中使用此数据网格,它是免费的

WPF Extended DataGrid

答案 1 :(得分:-1)

您可能希望使用所谓的树网格视图。 DevExpress和Infragistics有很酷的专有实现。但也有自由的灵魂,被诅咒here

答案 2 :(得分:-1)

在listviewitem中,您必须使用其他列表视图构建模板 所以你的第二个listview绑定到

 public IEnumerable<Item> Childs { get; set; }