In Silverlight, I have a Vertical ListBox that has a Horizontal ListBox for each item. I want the items in the HorizontalListbox to space evenly across the width of the parent (Vertical) ListBox. How can I do this?
<ListBox x:Name='MachineListBox' Background='Green'> <ListBox.ItemTemplate> <DataTemplate> <ListBox ItemsSource='{Binding CoilList}' Background='Red' HorizontalAlignment='Stretch'> <ListBox.ItemsPanel> <ItemsPanelTemplate> <StackPanel HorizontalAlignment='Stretch' /> </ItemsPanelTemplate > </ListBox.ItemsPanel> <ListBox.ItemTemplate > <DataTemplate> <TextBlock Text='{Binding Coil}' HorizontalAlignment='Stretch'/> </DataTemplate> </ListBox.ItemTemplate> </ListBox> </DataTemplate> </ListBox.ItemTemplate> </ListBox>
I’ll take the liberty of suggesting you use a custom control of my own invention. It’s called a ProportionalPanel and it does just what you need – spaces items evenly. You could use it for the ItemsPanel in the inner ListBox instead of the StackPanel. I also provide the source code, so you can tweak the logic any way you like. The relevant post on my blog is here.