2011-01-20 10 views
10

Tengo varias instancias en las que me gustaría tener varios controles en una sola columna en una cuadrícula de datos.¿Cómo agrego múltiples controles a una DataGridTemplateColumn de una cuadrícula de datos usando wpf?

Por ejemplo, tengo un conjunto de datos que contiene imágenes con la misma descripción, fuente de imagen, marca de tiempo, geoetiqueta, etc. Me gustaría mostrar esta información con una imagen en miniatura en una columna y la mayoría de los datos en un cuadro de texto o una etiqueta. Otros conjuntos de datos que necesito requieren textbox/checkbox, o textbox/combobox.

Cuando intento agregar un segundo control recibo un error que informa que la propiedad "VisualTree" está configurada más de una vez.

<DataGridTemplateColumn Header="Data" Width="100"> 
    <DataGridTemplateColumn.CellTemplate> 
     <DataTemplate> 
      <Label Name="Description" Content="{Binding Desc}"></Label> 
      <Label Name="Camera" Content="{Binding Camera}"></Label> 
     </DataTemplate>  
    </DataGridTemplateColumn.CellTemplate> 
</DataGridTemplateColumn> 

Respuesta

26

El DataTemplate debe tener un solo elemento, creo que - por lo que debe utilizar un panel para contener los elementos, decir algo como esto:

<DataGridTemplateColumn Header="Data" Width="100"> 
    <DataGridTemplateColumn.CellTemplate> 
     <DataTemplate> 
      <StackPanel Orientation="Horizontal"> 
       <Label Name="Description" Content="{Binding Desc}"></Label> 
       <Label Name="Camera" Content="{Binding Camera}"></Label> 
      </StackPanel> 
     </DataTemplate> 
    </DataGridTemplateColumn.CellTemplate> 
</DataGridTemplateColumn> 

Usted podría, por supuesto, utilizar WrapPanel, Cuadrícula, o cualquier otra cosa que te guste, StackPanel parece ser lo que estás buscando.

+0

Genius! Gracias, nunca pensé usar un diseño. Gracias de nuevo – IanM

Cuestiones relacionadas