2009-06-15 3 views
11

OK, ich gebe auf: was muss ich Stackpanel unten auf diese ändern, so dass es die ausdrückt:Warum wird StackPanel nicht Textblock links und Button rechts in Silverlight setzen?

  • Text auf ganz links in Form
  • Taste auf ganz rechts Form.

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> 

ANTWORT:

Silverlight 3 toolkit heruntergeladen, die DockPanel, installiert, verwiesen System.Windows.Controls hat, dann folgende 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

Antwort

11

können Sie Dockpanel aus Toolkit verwenden oder Raster mit 2 Spalten verwenden. und haben den Inhalt der zweiten Spalte rechts ausgerichtet

7

Meinst du, dass der Button rechts vom Formular ausgerichtet sein soll? Wenn dies der Fall ist, wird StackPanel das nicht tun. Es ist gemacht, um Dinge "aufzustapeln" entweder horizontal oder vertikal.

Ich würde Sie DockPanel versuchen vorschlagen:

<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

ja, das ist so, wie ich es in WPF tun, aber ich bin mit Silverlight zur Zeit, wenn auch Silverlight 3, leider In dieser Version gibt es kein Dockpanel, das nach einer Workaround sucht ... –

+1

Ich bin mir ziemlich sicher, dass das Silverlight Control Toolkit über ein Dockpanel verfügt –

+0

Silverlight hat kein DockPanel? Ich muss mehr auf die Tags von Fragen achten. Ich nahm automatisch an, dass es sich um eine WPF-Frage handelte, aber ich hatte keine Ahnung, dass es in Silverlight kein DockPanel gab! –

1

denke ich Matts Ansatz es am besten. Zwei Alternativen sind jedoch, ein Gitter zu verwenden und den Inhalt nach links oder rechts auszurichten oder dem Knopf einen wirklich großen Spielraum zu geben.

1

Referenz sein soll:

xmlns:toolkit="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Toolkit" 
Verwandte Themen