La ListBox, c'est tout un poème !
Que ce soit en WPF ou en Silverlight, la première fois que l'on doit s'attaquer à la mise en forme d'une ListBox, c'est en général assez douloureux. Le fait est que la ListBox est un mix de différents styles et modèles, et ce n'est pas toujours évident de savoir où aller pour modifier telle ou telle propriété.
Par expérience, je sais que si il y a une chose que l'on cherche un moment avant de le trouver, c'est le selected d'un Item,vous savez ce bleu sympathique qui apparaît lorsque vous sélectionnez une ligne de la liste.
Il faut d'abord comprendre comment est structurée la liste, et comment elle gère ses éléments.
Les Style / Modèle de la ListBox définissent son apparence : c'est là que vous pourrez par exemple modifier sa couleur de fond et de contour.
Il y a ensuite un Modèle qui s'appelle ItemsPanelTemplate, qui gère l'agencement des éléments qui sont affichés dans la ListBox. Par défaut c'est un VirtualizingStackPanel en WPF, un StackPanel en Silverlight.
C'est là que vous pourrez modifier l'orientation des éléments, si vous souhaitez qu'ils s'affichent de gauche à droite plutôt que de haut en bas.
Le niveau suivant est un style, l'ItemContainerStyle, qui contient un template. Ce style et ce template gèrent l'affichage d'un élément de la liste. C'est en quelque sorte la coque dans laquelle vont être affichées les données.
Les données en question, sont affichées via un DataTemplate, appelé ItemTemplate.
Le fond et la forme de chaque ligne sont donc bien séparés, puisque le fond est géré par l'ItemTemplate et la forme par le template contenu dans l'ItemContainerStyle... Vous suivez ?
Par conséquent, si vous voulez modifier la forme d'un item, et donc son état sélectionné, c'est dans le template de l'ItemContainerStyle qu'il vous faudra agir.
Très intéressant ! ( et compliqué ! :p )En tous cas, merci de partager ces informations avec nous.
Rédigé par: Mix | lundi 09 février 2009 à 13h44