Search code examples
c#wpfxamllistviewdata-binding

ListView Grid in grid


I have a listview with id, name and price. Each such an item has a sublist with categories.

So "for each" Item I want to display all subitems. This is would it should look like:

Example

But I don't know how to do it. Here is my xaml code.

<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}">

I have to add a subgrid I think, but I don't know how.

This is my class structure

public class GroupedItem
{
    public int ID { get; set; }
    public string Name { get; set; }
    public float Price { get; set; }

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

Has someone an idea?


Solution

  • you can do this with 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>
    

    Also you can use this datagrid in codeplex it's free

    WPF Extended DataGrid (this link is no longer available because codeplex is dead)