2010-11-05 49 views
7

我想用一些文本来获得一个水平的StackPanel,然后一个按钮一直卡在右侧。我试过这个:Silverlight浮动内容权利

   <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

正如几位用户指出的,最好的解决方案可能是一个Grid。问:你有什么特定的“StackPanel”行为?这将确定网格列设置。 – 2010-11-05 16:10:38

+0

是的,看到答案后我觉得很傻。我只需要一个网格 - 就这么简单。我对WPF/Silverlight相当陌生。谢谢。 – 2010-11-06 00:13:59

回答

8

就个人而言,我会用一个网格,而不是一个StackPanel的这一点。只需添加两列,一列设置为“*”,另一列设置为“自动”,然后将TextBlock放在第一列,第二列按钮上:

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> 

默认码头设置为左所以它的行为就像一个水平的StackPanel对于没有明确的码头设置项目。

+0

这真的是这个问题的最佳答案。 – 2011-07-06 14:26:43

2

StackPanels是简单的场景OK,只要你想上的布局完全控制,使用电网