Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 网格中的ListView网格_C#_Wpf_Xaml_Listview_Data Binding - Fatal编程技术网

C# 网格中的ListView网格

C# 网格中的ListView网格,c#,wpf,xaml,listview,data-binding,C#,Wpf,Xaml,Listview,Data Binding,我有一个带有id、名称和价格的列表视图。每个这样的项目都有一个带有类别的子列表 所以“对于每个”项,我想显示所有子项。 这就是它应该看起来的样子: 但我不知道怎么做。 这是我的xaml代码 <ListView.View> <GridView> <GridViewColumn Width="140" Header="ID" DisplayMemberBinding="{Binding ID}"/> <GridViewColumn Widt

我有一个带有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; }
}
公共类GroupedItem
{
公共int ID{get;set;}
公共字符串名称{get;set;}
公开浮动价格{get;set;}
公共IEnumerable子项{get;set;}
}

有人有主意吗?

您可以使用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中使用这个数据网格,它是免费的


您可能希望使用所谓的树状栅格视图。DevExpress和Infragistics提供了非常酷的专有实现。但也有免费的解决方案,在listviewitem中进行了讨论。您必须使用其他listview构建模板 因此,您的第二个listview绑定到

 public IEnumerable<Item> Childs { get; set; }
public IEnumerable Childs{get;set;}
这里是一个例子