Question

J'ai un contrôle utilisateur personnalisé je l'ai écrit dans WPF pour afficher certaines données. Je veux montrer ce usercontrol dans une liste, mais je veux aussi fournir plusieurs en-têtes de colonnes (correspondant à des propriétés sur l'utilisateur cotrol) afin que les utilisateurs pouvez trier sur les propriétés contenues dans le usercontrol.

Je ne suis pas sûr de la meilleure façon d'aller à ce sujet.

J'ai actuellement un ListBox l'affichage de ces contrôles utilisateur, mais la zone de liste n'a pas la tête et je ne peux pas comprendre comment mettre plusieurs en-têtes sur la zone de liste.

Idéalement, je voudrais quelque chose comme ceci:

Header1   Header2  Header3   Header4
[UserControlThatSpansAllFourColumns]

Mon autre pensée était d'utiliser une grille de données et obtenir en quelque sorte chaque élément pour couvrir plusieurs colonnes, mais jusqu'à présent, je ne peux pas comprendre cela non plus.

Si quelqu'un a des conseils, je leur souhaiter la bienvenue!

Était-ce utile?

La solution

Ok, ce n'est pas en tout cas, la « meilleure façon », mais je voudrais simplement jeter cela en. Une façon ce genre de travaux comme ce que vous avez besoin est d'utiliser un ListView avec un ItemContainerStyle personnalisé qui utilise un <ContentPresenter> au lieu de le <GridViewRowPresenter> par défaut. Ce court XAML démontre un peu ceci:

<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>

Ici, vous obtenez les en-têtes de colonne, et les articles étendent sur l'ensemble listview. Dans cette solution, cependant, le rendu des éléments sont un peu dans un monde propre. Il est pas vraiment relié aux colonnes définies pour le ListView. Donc je suppose que d'une façon de faire ce travail mieux est de fournir votre propre implémentation de <RowPresenter> qui prend réellement en considération les GridViewColumns définies dans le listview parent.

Quoi qu'il en soit, espérons que cela aide en quelque sorte.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top