ListView 网格中的网格

问题描述 投票:0回答:3

我有一个包含 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; }
}

有人有想法吗?

c# wpf xaml listview data-binding
3个回答
3
投票

您可以使用数据网格来做到这一点:

 <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 扩展 DataGrid(此链接不再可用,因为 codeplex 已失效)


-1
投票

您可能想使用所谓的树网格视图。 DevExpress 和 Infragistics 有非常酷的专有实现。但也有免费的灵魂,在here

进行了讨论

-1
投票

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

 public IEnumerable<Item> Childs { get; set; }
© www.soinside.com 2019 - 2024. All rights reserved.