wpf listbox itemspaneltemplate

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.