2010-11-05 12 views
7

Sto cercando di ottenere uno StackPanel orizzontale con del testo e un pulsante bloccato fino alla destra. Ho provato questo:Silverlight float content right

   <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> 

Quale non sembra funzionare. Ovviamente l'aggiunta di un margine al TextBlock funzionerà, in questo modo:

   <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> 

Ma questo è un male per tutti i tipi di ragioni. Ci sono altri modi naturali per farlo?

+0

Come sottolineato da diversi utenti, la soluzione migliore è probabilmente una griglia. D: Che comportamento specifico "StackPanel" stai cercando? Questo determinerà le impostazioni della colonna della griglia. –

+0

Sì, mi sono sentito davvero stupido dopo aver visto la risposta. Avevo solo bisogno di una griglia - semplice come quella. Sono abbastanza nuovo per WPF/Silverlight. Grazie. –

risposta

8

Personalmente, vorrei usare una griglia al posto di uno StackPanel per questo. Basta aggiungere due colonne, un set alla dimensione "*" e uno a "Auto" e mettere TextBlock nella colonna uno, Pulsante nella colonna due:

3

Utilizzare un DockPanel invece: impostazione Dock

<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> 

Il valore predefinito è lasciato così si comporta come un'orizzontale StackPanel per gli elementi che non hanno alcuna impostazione esplicita Dock.

+0

Questa è davvero la migliore risposta per questo problema. –

2

StackPanels sono OK per gli scenari semplicistici, non appena si vuole il controllo completo sul layout, utilizzare griglia