如何在列表视图的列表中显示列表的属性?

时间:2011-04-19 08:53:11

标签: wpf listview mvvm

我正在用wpf,MVVM模式实现一个应用程序。 我想用对象实现listview。这些对象包含一个列表。默认情况下,此列表仅包含1个对象。但在listview中,我想展示某些对象。所以列表中对象的属性。这是我的第一个问题。 但我也必须能够在此列表中包含更多对象。我的第二个问题是我真的不知道如何实现这一点?而且我还必须在listview中显示这些对象的属性。 也许树视图?但我不明白我是怎么开始的......

有人有想法吗?

1 个答案:

答案 0 :(得分:2)

您可以任意嵌套DataTemplates,例如

<ListView ItemsSource="{Binding Data}">
    <ListView.View>
        <GridView>
            <GridViewColumn Header="Name"        DisplayMemberBinding="{Binding Name}"/>
            <!-- Internal Manchines list gets its own ListView -->
            <GridViewColumn Header="Machines">
                <GridViewColumn.CellTemplate>
                    <DataTemplate>
                        <ListView ItemsSource="{Binding Machines}">
                            <ListView.View>
                                <GridView>
                                    <GridViewColumn Header="Model" DisplayMemberBinding="{Binding Model}"/>
                                    <GridViewColumn Header="Manufacturer" DisplayMemberBinding="{Binding Manufacturer}"/>
                                </GridView>
                            </ListView.View>
                        </ListView>
                    </DataTemplate>
                </GridViewColumn.CellTemplate>
            </GridViewColumn>
            <GridViewColumn Header="Occupation"  DisplayMemberBinding="{Binding Occupation}"/>
            <GridViewColumn Header="Status"      DisplayMemberBinding="{Binding Status}"/>
        </GridView>
    </ListView.View>
</ListView>

这可以在对齐方面得到改善,例如您可以在DataTemplate中使用共享大小列设置Grid,以使所有列表具有相同的宽度(使内部列对齐可能有点困难)

此外,您可以定义一种样式来折叠空列表(否则会显示没有项目的标题)。