在WPF网格/列表中跨越多列的最佳方法?

在WPF网格/列表中跨越多列的最佳方法?,wpf,datagrid,listbox,grid,columnspan,Wpf,Datagrid,Listbox,Grid,Columnspan,我在WPF中编写了一个自定义用户控件来显示一些数据。我想在一个列表中显示这个usercontrol,但我还想提供多个列标题(匹配用户cotrol上的一些属性),以便用户可以根据usercontrol中包含的属性进行排序 我不知道最好的办法是什么 我目前有一个显示这些用户控件的列表框,但是列表框没有标题,我不知道如何在列表框上放置多个标题 理想情况下,我想要这样的东西: Header1 Header2 Header3 Header4 [UserControlThatSpansAllFou

我在WPF中编写了一个自定义用户控件来显示一些数据。我想在一个列表中显示这个usercontrol,但我还想提供多个列标题(匹配用户cotrol上的一些属性),以便用户可以根据usercontrol中包含的属性进行排序

我不知道最好的办法是什么

我目前有一个显示这些用户控件的列表框,但是列表框没有标题,我不知道如何在列表框上放置多个标题

理想情况下,我想要这样的东西:

Header1   Header2  Header3   Header4
[UserControlThatSpansAllFourColumns]
我的另一个想法是使用DataGrid,以某种方式使每个项跨越多个列,但到目前为止,我也无法理解这一点


如果有人有任何建议,我欢迎他们

好吧,这无论如何都不是“最好的方法”,但我还是把它放进去。一种类似于您所需要的工作方式是,使用带有自定义ItemContainerStyle的ListView,该自定义ItemContainerStyle使用
而不是默认的
。这个简短的XAML在某种程度上说明了这一点:

<ListView>
    <ListView.ItemContainerStyle>
        <Style TargetType="ListViewItem">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="ListViewItem">
                        <ContentPresenter/>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </ListView.ItemContainerStyle>
    <ListView.View>
        <GridView>
            <GridViewColumn Header="Header1"/>
            <GridViewColumn Header="Header2"/>
        </GridView>
    </ListView.View>

    <Button>Item1</Button>
    <Button>Item2</Button>

</ListView>

项目1
项目2
在这里,您可以得到列标题,并且这些项跨越整个listview。然而,在这个解决方案中,项目的渲染有点像是在一个自己的世界中。它实际上没有连接到为ListView定义的列。因此,我想让这项工作更好的一种方法是提供自己的
实现,该实现实际上考虑了父listview中定义的GridViewColumns


无论如何,希望这能有所帮助。

非常感谢!这基本上就是我想要的。我用一个自定义用户控件替换了ContentPresenter,它成功了。一个小的排序魔术,我会有一个完整的解决方案。这是很有帮助的谢谢你,你能让我知道我们如何保持两列不变,合并只特定的列?