2009-06-15 12 views
11

OK, poddaję się: co muszę zmienić ten StackPanel poniżej tak, że stawia: tekstDlaczego StackPanel nie wstawi bloku tekstu po lewej i przycisku po prawej stronie w Silverlight?

  • na daleko na lewo od postaci przycisku
  • na prawej formie.

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> 

ODPOWIEDŹ:

Pobrano Silverlight 3 toolkit który ma DockPanel, instalowane, przywoływane System.Windows.Controls, wówczas następujące 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

Odpowiedz

11

można użyć panelu dockpanel z zestawu narzędzi lub użyć siatki z 2 kolumnami. i mieć zawartość drugiej kolumnie po prawej wyrównany

7

Czy masz na myśli, że chcesz, aby przycisk był wyrównany z prawej strony formularza? Jeśli tak, StackPanel tego nie zrobi. Została stworzona do "układania rzeczy w stos" w pionie lub w poziomie.

Proponuję spróbować 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

tak, to sposób w jaki to zrobić w WPF, ale używam Silverlight w tej chwili, choć Silverlight 3, przykro zobacz, nie ma dockpanel w tej wersji, szukając sposobu obejścia ... –

+1

Jestem dość pewny, że zestaw narzędzi kontroli Silverlight ma dockpanel –

+0

Silverlight nie ma DockPanel? Muszę zwracać większą uwagę na tagi pytań. Automatycznie założyłem, że jest to pytanie WPF, ale nie miałem pojęcia, że ​​nie ma DockPanel w Silverlight! –

1

myślę podejściu Matta najlepszy. Dwie alternatywy to użycie siatki i wyrównanie zawartości do lewej i prawej strony lub po prostu nadanie przycisku naprawdę dużego marginesu.

1

referencyjne powinny być:

xmlns:toolkit="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Toolkit" 
Powiązane problemy