Horizontal Stackpanel Fill Parent Control

35,660

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>
Share:
35,660
Ternary
Author by

Ternary

Updated on July 09, 2022

Comments

  • Ternary
    Ternary almost 2 years

    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.

  • Ternary
    Ternary about 12 years
    So then do I need to dynamically manage adding a column for each new entry and placing each control into it's own cell?
  • Matt Burland
    Matt Burland about 12 years
    In the case of displaying a dynamic collection of items, you might want to think about using the ListBox control and set it's ItemPanel to a UniformGrid. That might get close to what you want, but I don't think you'll get the left and right justification on the first and last item.