2009-06-15 2 views
11

Хорошо, я сдаюсь: что я должен изменить в этом StackPanel ниже, так что он ставит: текстПочему StackPanel не помещает текстовый блок слева и кнопку справа в Silverlight?

  • на дальней левой формы кнопки
  • на дальнем правом форме.

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> 

ОТВЕТ:

Скачивали Silverlight 3 toolkit который имеет DockPanel, установленный, ссылочные System.Windows.Controls, то следующий код 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

ответ

11

вы можете использовать док-панель из инструментария или использовать сетку с 2 столбцами. и есть содержание второй справа колонки выровнены

7

Вы хотите сказать, что хотите, чтобы кнопка выстроилась справа от формы? Если это так, StackPanel этого не сделает. Это сделано для «складывания вещей вверх» по горизонтали или по вертикали.

Я хотел бы предложить вам попробовать 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

да, это так, как я делаю это в WPF, но я использую Silverlight в настоящее время, хотя и Silverlight 3, извините см., что в этой версии нет док-панели, ища какое-то обходное решение ... –

+1

Я уверен, что набор инструментов управления Silverlight имеет док-панель –

+0

У Silverlight нет DockPanel? Я должен уделять больше внимания тегам вопросов. Я автоматически предполагал, что это вопрос WPF, но я понятия не имел, что в Silverlight нет DockPanel! –

1

Я думаю, что подход Мэтта его лучшим. Две альтернативы - это использование сетки и выравнивание содержимого влево и вправо или просто придавать кнопке действительно большой запас.

1

Ссылка должна быть:

xmlns:toolkit="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Toolkit" 
Смежные вопросы