2008-09-30 3 views
13

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

14

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

+0

Cette approche ne fonctionne pas malheureusement. –

+4

J'ai oublié de mettre dans le {x: Type ... choses, s'il vous plaît essayer à nouveau! – rudigrobler

+1

Assurez-vous également que vous n'avez pas de jeu de clés x:! – rudigrobler

6

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/

+0

On dirait que c'est ce dont j'ai besoin. Merci. –