Aligning controls on both left and right side in a stack panel in WPF
Just do not use a StackPanel
, StackPanels
stack. They do, for obvious reasons, not allow alignment in the direction in which they stack. Use a Grid
, with column definitions like so:
<Grid.ColumnDefinitions> <ColumnDefinition Width="Auto" /> <ColumnDefinition Width="*" /> <ColumnDefinition Width="Auto" /></Grid.ColumnDefinitions>
Even though this is old, should someone come across this like I did, here's a simple solution.
Make a new grid and inside that grid put two stack panels with different Horizontal Alignment.
<Grid> <StackPanel Orientation="Horizontal" HorizontalAlignment="Left"> <!--Code here--> </StackPanel> <StackPanel Orientation="Horizontal" HorizontalAlignment="Right"> <!--Code here--> </StackPanel></Grid>
The possible issue is that now without extra handling the two could overlap with each other.
As you have set the StackPanel
's orientation to Horizontal
, the HorizontalAlignment
property won't work on child-elements. You can keep the StackPanel
if you need additional controls, though I would recommend switching to a Grid
(among other things) to build the layout you want.
Also, the Grid
will allow you to control the actual width of each column:
<Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="50" /> <ColumnDefinition Width="150" /> </Grid.ColumnDefinitions> <RadioButton Grid.Column="0" ... /> <Label Grid.Column="1" ... /></Grid>