alignmentWPF中堆栈面板左侧和右侧的控件

我有以下代码:

<DockPanel> <StackPanel DockPanel.Dock="Top" Orientation="Horizontal"> <RadioButton Content="_Programs" IsChecked="{Binding Path=ProgramBanksSelected}" IsEnabled="{Binding Path=ProgramsEnabled}" Margin="8" /> <StackPanel> <Label Content="Master" Height="28" Name="MasterFileStatus" VerticalContentAlignment="Center"/> </StackPanel> </StackPanel> ... 

单选button应该放在堆栈面板的左侧(我删除了一些button,不要混淆这个例子),标签(我暂时放在一个嵌套的StackPanel中)应该在右侧。

我已经尝试了很多路线的组合,但我无法在右侧获得标签。 我应该添加什么来完成这个?

只是不要使用StackPanelStackPanels 堆栈 。 由于显而易见的原因,它们确实不允许在它们堆叠的方向上alignment。 使用Grid ,列定义如下:

 <Grid.ColumnDefinitions> <ColumnDefinition Width="Auto" /> <ColumnDefinition Width="*" /> <ColumnDefinition Width="Auto" /> </Grid.ColumnDefinitions> 

即使这是旧的,如果有人遇到像我这样的,这是一个简单的解决scheme。

做一个新的网格,并在该网格内放置两个不同的水平alignment的堆叠面板。

 <Grid> <StackPanel Orientation="Horizontal" HorizontalAlignment="Left"> <!--Code here--> </StackPanel> <StackPanel Orientation="Horizontal" HorizontalAlignment="Right"> <!--Code here--> </StackPanel> </Grid> 

可能的问题是,现在没有额外的处理,两者可能会相互重叠。

由于您已将StackPanel的方向设置为“ Horizontal ,因此HorizontalAlignment属性将不适用于子元素。 如果你需要额外的控制,你可以保留StackPanel ,但我build议你切换到一个Grid (等等)来构build你想要的布局。

此外, Grid将允许您控制每列的​​实际宽度:

 <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="50" /> <ColumnDefinition Width="150" /> </Grid.ColumnDefinitions> <RadioButton Grid.Column="0" ... /> <Label Grid.Column="1" ... /> </Grid>