Search code examples
wpfxamllayoutstackpanel

Horizontal Stackpanel Fill Parent Control


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.


Solution

  • 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>