2009-09-08 12 views
12

En mi ViewModel tengo una lista de elementos a los que me gustaría una cuadrícula en mi vista para enlazar (los elementos serán las cuadrículas de los niños). La lista es una lista de modelos de vista para los artículos.¿Cómo unir los hijos de una grilla a una lista?

¿Cómo enlazar una cuadrícula a la lista (puedo acceder .children en el código pero no en xaml)? Además, ¿cómo especifica la plantilla de datos (otro archivo xaml) para los modelos de vista en la lista para que se representen correctamente dentro de la cuadrícula?

Gracias

Respuesta

22

utilizar un ItemsControl con el ItemsPanel conjunto a una cuadrícula:

<ItemsControl ItemsSource="{Binding TheList}"> 
    <ItemsControl.ItemsPanel> 
    <ItemsPanelTemplate> 
     <Grid/> 
    </ItemsPanelTemplate> 
    </ItemsControl.ItemsPanel> 
</ItemsControl> 

En el ItemsControl 's ItemContainerStyle, es posible que desee unirse a los Grid.Row y Grid.Column las propiedades asociadas a alguna propiedad de la elementos:

<ItemsControl.ItemContainerStyle> 
    <Style TargetType="{x:Type FrameworkElement}"> 
     <Setter Property="Grid.Row" Value="{Binding RowIndex}"/> 
     <Setter Property="Grid.Column" Value="{Binding ColumnIndex}"/> 
    </Style> 
    </ItemsControl.ItemContainerStyle> 
+1

Gracias. También me di cuenta de la segunda parte de mi pregunta si alguien más se encuentra con este

+0

Esto funciona bien si sabe cuántas filas y columnas necesita, pero ¿qué pasa si quiere tantas como la fila/columna máxima? ¿Hay alguna manera de autogenerar las definiciones de fila/columna? –

Cuestiones relacionadas