WPF - DataTemplate sin un contenedor, elementos como filas en una cuadrícula?
Pregunta
¿Existe un mecanismo equivalente al ItemsControl.ItemTemplate
que funciona con un Grid
? Tengo una colección de elementos y me gustaría presentarlos como filas en un Grid.Column
para poder asignar <=> a los elementos individuales dentro de la plantilla (en oposición a las filas en un control de lista). ¿Es esto posible en WPF utilizando controles estándar?
Solución
Ok, use un ItemsControl con la propiedad adjunta Grid.IsSharedSizeScope="true"
aplicada. Luego, para su ItemTemplate, usa un <Grid>
como lo haría normalmente, excepto que ahora, cuando agrega ColumnDefinition
s, establece el atributo SharedSizeGroup
en un nombre que es único para cada columna. Entonces, por ejemplo:
<ItemsControl Grid.IsSharedSizeScope="true">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition SharedSizeGroup="MyFirstColumn" />
<ColumnDefinition SharedSizeGroup="MySecondColumn" />
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="{Binding MyFirstProperty}"/ >
<TextBlock Grid.Column="1" Text="{Binding MySecondProperty}"/ >
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
Para obtener más información sobre IsSharedSizeScope y SharedSizeGroup, verifique esta sección del SDK . Cabe señalar que RowDefinitions también tiene SharedSizeGroup para que también pueda hacer diseños horizontales.
Otros consejos
Tal vez entendí mal su problema, pero ¿no es exactamente lo que a ¿GridView lo hace?