WPF: por qué los elementos de Listbox no llenan uniformgrid
listbox itemtemplate wpf (2)
Tengo un cuadro de lista con ItemsPanelTemplate establecido en UniformGrid con rows = 6 y cols = 7.
Quiero que los elementos del cuadro de lista llenen su espacio.
Estoy usando un datatemplete definido en un diccionario.
El control externo de mi plantilla es un borde con HorizontalAlignment = Stretch y VerticalAlignent = Strectch, pero las plantillas no llenan el espacio de elementos de la lista.
¿Algunas ideas? Malcolm
EDITADO: se agregó información adicional y respondió a la pregunta.
Una forma interesante de hacer que ListBoxItems
sea uniforme con otros elementos es con la característica de alcance compartido de la Grid
en su DataTemplate
Ejemplo:
<ItemsControl Grid.IsSharedSizeScope="True" ItemsSource="{Binding Path=Items}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition SharedSizeGroup="Content"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="1" Text="{Binding Path=Name}">
</Grid>
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
Ahora todos los TextBlocks
tendrán el mismo tamaño en su diseño. El elemento secundario debe llenar todo el espacio disponible si no se establece un ancho / alto específico.
Alternativamente, puede establecer el ancho y alto del control para estirar, sin embargo, creo que el uso de Grid.SharedScopeSize es una forma más elegante de lograr el mismo efecto.
La respuesta a esto para establecer HorizontalContentAligment y VerticalContentAlignment para Stretch en LISTBOX no es la plantilla de datos.