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中)应该在右侧。
我已经尝试了很多路线的组合,但我无法在右侧获得标签。 我应该添加什么来完成这个?
只是不要使用StackPanel
, StackPanels
堆栈 。 由于显而易见的原因,它们确实不允许在它们堆叠的方向上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>