2009-06-15 9 views
11

OK, mi arrendo: cosa devo cambiare per questo StackPanel seguito in modo che esso mette il: testoPerché StackPanel non inserisce il blocco di testo a sinistra e il pulsante a destra in Silverlight?

  • sulla sinistra della forma pulsante
  • sulla destra della forma.

alt text http://tanguay.info/web/external/stackPanelLeftRight.png

<UserControl x:Class="TestData333.MainPage" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Width="400" Height="300"> 
    <Grid x:Name="LayoutRoot" Background="White"> 
     <Border CornerRadius="10" Background="Yellow" Padding="20"> 
      <StackPanel VerticalAlignment="Top" HorizontalAlignment="Left"> 
       <ScrollViewer Background="Beige" 
           Height="230" 
           Width="360"> 
        <StackPanel> 
         <TextBlock x:Name="TheContent" 
          Foreground="Navy" 
          FontSize="14" 
          TextWrapping="Wrap"/> 
        </StackPanel> 
       </ScrollViewer> 

       <StackPanel Orientation="Horizontal"> 
        <TextBlock x:Name="ProgressIndicator" Text="Ready..." 
           HorizontalAlignment="Left"/> 
        <Button Content="Load Data" 
         Width="100" 
         HorizontalAlignment="Right" 
         Click="Button_Load" 
         Margin="0 5 0 0"/> 
       </StackPanel> 

      </StackPanel> 
     </Border> 
    </Grid> 
</UserControl> 

RISPOSTA

Scaricato Silverlight 3 toolkit che ha DockPanel, installato, System.Windows.Controls riferimento, seguendo poi XAML:

<UserControl x:Class="TestData333.MainPage" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:toolkit="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls" 
    Width="400" Height="300"> 
    <Grid x:Name="LayoutRoot" Background="White"> 
     <Border CornerRadius="10" Background="Yellow" Padding="20"> 
      <StackPanel VerticalAlignment="Top" HorizontalAlignment="Left"> 
       <ScrollViewer Background="Beige" 
           Height="230" 
           Width="360"> 
        <StackPanel> 
         <TextBlock x:Name="TheContent" 
          Foreground="Navy" 
          FontSize="14" 
          TextWrapping="Wrap"/> 
        </StackPanel> 
       </ScrollViewer> 

       <toolkit:DockPanel Margin="0 5 0 0"> 
        <TextBlock toolkit:DockPanel.Dock="Left" x:Name="ProgressIndicator" Text="Ready..." 
           FontSize="12" 
           HorizontalAlignment="Left"/> 
        <Button toolkit:DockPanel.Dock="Right" Content="Load Data" 
         Width="100" 
         HorizontalAlignment="Right" 
         Click="Button_Load"/> 
       </toolkit:DockPanel> 

      </StackPanel> 
     </Border> 
    </Grid> 
</UserControl> 

alt text http://tanguay.info/web/external/silverlightDockPanel.png

risposta

11

è possibile utilizzare il dockpanel dal toolkit o utilizzare la griglia con 2 colonne. e hanno il contenuto della seconda colonna destra allineato

7

Vuoi dire che vuoi che il pulsante sia allineato a destra del modulo? Se è così, StackPanel non lo farà. È fatto per "impilare le cose" sia orizzontalmente che verticalmente.

Vorrei suggerire di provare DockPanel:

<DockPanel> 
    <TextBlock x:Name="ProgressIndicator" 
       DockPanel.Dock="Left" 
       Text="Ready..." /> 
    <Button DockPanel.Dock="Right" 
      Content="Load Data" 
      Width="100" 
      Click="Button_Load" 
      Margin="0,5,0,0" /> 
</DockPanel> 
+0

sì, questo è il modo in cui lo faccio in WPF, ma sto usando Silverlight per il momento, anche se Silverlight 3, spiace non ci sono dockpanel in questa versione, alla ricerca di una soluzione alternativa ... –

+1

Sono abbastanza sicuro che il toolkit di controllo Silverlight abbia un dockpanel –

+0

Silverlight non ha un DockPanel? Devo prestare più attenzione ai tag delle domande. Ho automaticamente pensato che fosse una domanda WPF, ma non avevo idea che non ci fosse DockPanel in Silverlight! –

1

Penso che l'approccio di Matt è il migliore. Due alternative però sono l'uso di una griglia e l'allineamento del contenuto a sinistra e a destra o semplicemente a dare al pulsante un margine davvero ampio.

1

riferimento dovrebbe essere:

xmlns:toolkit="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Toolkit" 
Problemi correlati