我有一个在 WPF 中编写的自定义用户控件来显示一些数据。我想在列表中显示此用户控件,但我还想提供多个列标题(与用户控件上的某些属性匹配),以便用户可以对用户控件中包含的属性进行排序。
我不确定解决这个问题的最佳方法。
我目前有一个显示这些用户控件的列表框,但列表框没有标题,我不知道如何在列表框中放置多个标题。
理想情况下我想要这样的东西:
Header1 Header2 Header3 Header4
[UserControlThatSpansAllFourColumns]
我的另一个想法是使用 DataGrid 并以某种方式让每个项目跨越多个列,但到目前为止我也无法弄清楚。
如果有人有任何提示,我会欢迎他们!
好吧,这在任何情况下都不是“最好的方法”,但我只是把它扔进去。一种像您需要的那样工作的方法是将 ListView 与自定义 ItemContainerStyle 一起使用,该自定义 ItemContainerStyle 使用<ContentPresenter>
而不是默认的<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 的实现。
不管怎样,希望这能有所帮助。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)