我有一个自定义的用户控件在WPF中编写,以显示一些数据。我想在列表中显示此USERCONTROL,但我还想提供多个列标题(与用户Cotrol上的某些属性匹配),以便用户可以对UserControl中包含的属性进行排序。

我不确定最好的方法。

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

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

Header1   Header2  Header3   Header4
[UserControlThatSpansAllFourColumns]

我的另一个想法是使用datagrid,并以某种方式使每个项目跨越多列,但是到目前为止,我也无法弄清楚。

如果有人有任何提示,我欢迎他们!

有帮助吗?

解决方案

好的,这在任何情况下都不是“最佳方式”,但我只是将其插入。一种方式,例如您需要的工作是使用使用自定义ItemContainerStyle的listView <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。但是,在这种解决方案中,物品的渲染是在自己的世界中。它并未真正连接到为ListView定义的列。因此,我想使这项工作更好的一种方法是提供自己的 <RowPresenter> 实际考虑到父列表视图中定义的GridViewColumns的实现。

无论如何,希望这对某种方式有所帮助。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top