好的,这在任何情况下都不是“最好的方法”,但我只是把它扔进去。一种像你需要的那样工作的方法是将 ListView 与使用 a<ContentPresenter>
而不是 default的自定义 ItemContainerStyle 一起使用<GridViewRowPresenter>
。这个简短的 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>
在这里,您可以获得列标题,并且项目跨越整个列表视图。然而,在这个解决方案中,项目的渲染是一种自成一体的世界。它并没有真正连接到为 ListView 定义的列。因此,我想使这项工作更好的一种方法是提供您自己的<RowPresenter>
实现,该实现实际上考虑了父列表视图中定义的 GridViewColumns。
无论如何,希望这会有所帮助。