2010-01-22 6 views
1

Je dispose d'un contrôle utilisateur dont les utilisateurs veulent que je les mette à DataContext pour les lier à une liste d'objets. Dans mon contrôle, cependant, je veux afficher cette liste dans un Grid, mais dans un ordre non-trivial. La colonne/rangée d'affichage de chaque élément sera déterminée par un code que j'écrirai.WPF lier à une liste

Donc, je ne peux pas faire une liaison de données droite dans mon contrôle, j'ai besoin d'écrire du code qui va lire le DataContext et ensuite faire le traitement pour positionner correctement chaque élément.

Comment un nouveau membre de WPF pourrait-il faire cela? Je suppose que la partie que je ne comprends pas est ce que le code dans mon usercontrol ressemblera à lire les articles DataContext afin que je puisse les traiter.

EDIT: Précision: Je tiens à souligner que je veux lier à l'élément XAML Grid, pas un autre type de grille ou DataGrid. THX!

Répondre

3

L'un des moyens possibles d'y parvenir est d'utiliser un convertisseur. Vous pouvez créer un convertisseur qui convertit la liste d'entrée dans une autre liste où l'ordre a été changé. Ensuite, vous pouvez utiliser une liaison de données "normale" qui utilisera le convertisseur.

+0

Ok, cela semble bien, mais comment lier la sortie du convertisseur à une grille, avec des emplacements pour chaque élément en quelque sorte spécifié? –

+0

Vous pouvez modifier la propriété ItemsPanelProperty de votre ListBox en grille. Vous pouvez ensuite créer un style qui contient les propriétés Grid.Row et Grid.Column et le définir sur ItemsContainerStyle. – japf

Questions connexes