J'ai beaucoup d'éléments dans un contrôle de liste. Je souhaite que chaque élément possède un modèle d'élément différent en fonction du type de l'élément. Le premier élément de la liste est donc un type ObjectA et je veux donc qu'il soit rendu avec ItemTemplateA. Le deuxième élément est un type ObjectB et donc je veux qu'il ait ItemTemplateB pour le rendu. Pour l'instant, je peux seulement utiliser le paramètre ItemTemplate pour définir un modèle pour tous. Un moyen d'y parvenir?Modèle d'élément différent pour chaque élément d'une liste WPF?
Répondre
le ItemTemplateSelector
fonctionnera mais je pense qu'il est plus facile de créer plusieurs DataTemplate
s dans votre section de ressources, puis en donnant à chacun un DataType
. Cela utilisera automatiquement ce DataTemplate
si le générateur d'éléments détecte le type de données correspondant?
<DataTemplate DataType={x:Type local:ObjectA}>
...
</DataTemplate>
Assurez-vous également que vous n'avez pas x:Key
ensemble pour la DataTemplate
.
En savoir plus sur cette approche here
Jetez un oeil à la propriété ItemTemplateSelector de votre liste de contrôle. Vous pouvez pointer vers un TemplateSelector personnalisé et décider quel modèle utiliser dans le code.
Voici un blog décrivant TemplateSelectors:
http://blogs.interknowlogy.com/johnbowen/archive/2007/06/21/20463.aspx
Edit: Voici un meilleur poste:
http://blog.paranoidferret.com/index.php/2008/07/16/wpf-tutorial-how-to-use-a-datatemplateselector/
On dirait que c'est ce dont j'ai besoin. Merci. –
Cette approche ne fonctionne pas malheureusement. –
J'ai oublié de mettre dans le {x: Type ... choses, s'il vous plaît essayer à nouveau! – rudigrobler
Assurez-vous également que vous n'avez pas de jeu de clés x:! – rudigrobler