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>