我正在尝试使用一些文本获得水平StackPanel,然后一个按钮一直粘到右侧。我试过这个:
<StackPanel Orientation="Horizontal">
<TextBlock VerticalAlignment="Center" FontSize="14" Margin="5,0,0,0">Ahoy!</TextBlock>
<Button HorizontalAlignment="Right" Width="25" Height="25" Style="{StaticResource buttonGlassOrb}" Background="Red" />
</StackPanel>
这似乎不起作用。显然,为TextBlock添加一个边距将起作用,如下所示:
<StackPanel Orientation="Horizontal">
<TextBlock VerticalAlignment="Center" FontSize="14" Margin="5,0,120,0">Ahoy!</TextBlock>
<Button HorizontalAlignment="Right" Width="25" Height="25" Style="{StaticResource buttonGlassOrb}" Background="Red" />
</StackPanel>
但是由于种种原因这很糟糕。还有更自然的方法吗?
答案 0 :(得分:8)
就个人而言,我会使用Grid而不是StackPanel。只需添加两列,一组设置为“*”,一组设置为“Auto”,然后将TextBlock放入第一列,第二列设置Button:
答案 1 :(得分:3)
改为使用DockPanel:
<DockPanel>
<TextBlock VerticalAlignment="Center" FontSize="14" Margin="5,0,0,0">Ahoy!</TextBlock>
<Button DockPanel.Dock="Right" Width="25" Height="25" Style="{StaticResource buttonGlassOrb}" Background="Red" />
</DockPanel>
默认的Dock设置为Left,因此对于没有显式Dock设置的项目,它的行为类似于Horizontal StackPanel。
答案 2 :(得分:2)
StackPanels适用于简单的场景,只要您想要完全控制布局,请使用Grid