Is it possible to have a <StackPanel>
or labels (or buttons, whatever) going horizontally across it's parent control (e.g. Window
) and have it fill out all the space allowed?
For example if I had 3 controls
_ window width__
[ 1 ]__ [ 2 ] __ [ 3 ]
or 2 controls
_ window width__
[ 1 ]_______ [ 2 ]
in each case the full width of the window is being utilized with each edge control being left and right justified respectively.
StackPanel vs. For example, the order of child elements can affect their size in a DockPanel but not in a StackPanel. This is because StackPanel measures in the direction of stacking at PositiveInfinity, whereas DockPanel measures only the available size. The following example demonstrates this key difference.
StackPanel is a layout panel that arranges child elements into a single line that can be oriented horizontally or vertically. By default, StackPanel stacks items vertically from top to bottom in the order they are declared. You can set the Orientation property to Horizontal to stack items from left to right.
Example. A StackPanel allows you to stack elements in a specified direction. By using properties that are defined on StackPanel, content can flow both vertically, which is the default setting, or horizontally.
A StackPanel will stack controls, so no is the short answer. That's not what a StackPanel is designed to do.
You could use a grid as Vlad suggested. Something like this:
<Grid HorizontalAlignment="Stretch">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="auto"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="auto"/>
</Grid.ColumnDefinitions>
<Button Width="20" Height="20" Grid.Column="0"/>
<Button Width="20" Height="20" Grid.Column="2"/>
<Button Width="20" Height="20" Grid.Column="4"/>
</Grid>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With