WPF ListView - 2 个维度,1 个相同的结构

Posted

技术标签:

【中文标题】WPF ListView - 2 个维度,1 个相同的结构【英文标题】:WPF ListView - 2 dimensions with 1 same structure 【发布时间】:2014-05-10 17:48:00 【问题描述】:

我们正在开发一个 ListView (C# WPF),但我们没有找到如何绑定列中的项目列表,每个项目都包含一个具有相同列的项目列表。

让我们用一个例子来说明这一点:

我们得到了一个带有参数(名称等)的对象的可观察集合,每个对象都包含另一个具有相同参数的对象的可观察集合(除了它们没有列表)。所以我们想在 ListView 中列出它,但我们不知道怎么做!

我们对 ListView 的了解不够,无法实现这种结构,有什么建议吗?

提前致谢

【问题讨论】:

这不是一件非常简单的事情。你希望你的组项目也可以重新调整大小吗? 他们得到了相同的列(相同的参数),所以我只想有 1 个 ListView。你觉得有可能吗? 您可以通过将 CollectionViewSource 与 GroupDescriptions 结合使用,在不调整组级别项目大小的情况下进行分组,只需查看 MSDN 即可。如果您希望您的组级别项目的行为与未分组的项目相似,它会为解决方案增加很多复杂性。 谢谢,我会努力的!如果它有效,我会更新! 【参考方案1】:

我认为最好的方法是:

XAML:

<Window.Resources>
<DataTemplate x:Key="gridViewSecondCellTemplate1">
            <StackPanel Width="100">
                <TextBlock Text="Binding Content" FontSize="15" />
            </StackPanel>
</DataTemplate>

        <DataTemplate x:Key="gridViewCellTemplate1">
            <StackPanel Width="100">
                <TextBlock Text="Binding Title" FontSize="15" />
                <ListView ItemsSource="Binding MySecondSource>
                <ListView.View>
                    <GridView>
                        <GridViewColumn Header="Binding Subtitle" CellTemplate="StaticResource gridViewSecondCellTemplate1"/>
                    </GridView>
                </ListView.View>
                </ListView>
            </StackPanel>
        </DataTemplate>
</Window.Resources>

    <ListView ItemsSource="Binding MySource">
                <ListView.View>
                    <GridView>
                        <GridViewColumn Header="Col 1" Width="100" CellTemplate="StaticResource gridViewCellTemplate1"/>
                    </GridView>
                </ListView.View>
            </ListView>

我没有尝试此代码。试试看,如果可以的话告诉我。

【讨论】:

以上是关于WPF ListView - 2 个维度,1 个相同的结构的主要内容,如果未能解决你的问题,请参考以下文章

c# wpf listview虚拟化后还是卡顿

listview在上gridview在下,如何能够一起滚动?

WPF 中的 ListView 子项

WPF-ListView隐藏表头样式

WPF入门教程系列十九——ListView示例

WPF ListView ,XML