2008-09-30 9 views
13

Tengo muchos elementos dentro de un control de lista. Quiero que cada elemento tenga una plantilla de artículo diferente según el tipo de artículo. Por lo tanto, el primer elemento de la lista es un tipo ObjectA y, por lo tanto, quiero que se represente con ItemTemplateA. El segundo elemento es de tipo ObjectB y, por lo tanto, quiero que tenga ItemTemplateB para renderizar. Por el momento, solo puedo usar la configuración de ItemTemplate para definir una plantilla para todos ellos. Cualquier forma de lograr esto?¿Plantilla de artículo diferente para cada artículo en una lista de WPF?

Respuesta

14

la ItemTemplateSelector funciona, pero creo que es más fácil crear múltiples DataTemplate s en su sección de recursos y luego simplemente dándole a cada uno un DataType. Esto automáticamente usará este DataTemplate si el generador de elementos detecta el tipo de datos coincidente?

<DataTemplate DataType={x:Type local:ObjectA}> 
    ... 
</DataTemplate> 

También asegúrese de que usted no tiene ninguna x:Key conjunto para el DataTemplate.
Más información sobre este enfoque here

+0

Este enfoque no funciona de manera desafortunada. –

+4

Olvidé poner el {x: tipo ... cosas, por favor intente de nuevo! – rudigrobler

+1

También asegúrese de no tener x: ¡Juego de llaves! – rudigrobler

6

Eche un vistazo a la propiedad ItemTemplateSelector del control de su lista. Puede dirigirlo a un TemplateSelector personalizado y decidir qué plantilla usar en el código.

Aquí hay un post TemplateSelectors que describen:

http://blogs.interknowlogy.com/johnbowen/archive/2007/06/21/20463.aspx

Editar: Aquí está un puesto mejor:

http://blog.paranoidferret.com/index.php/2008/07/16/wpf-tutorial-how-to-use-a-datatemplateselector/

+0

Parece justo lo que necesito. Gracias. –

Cuestiones relacionadas