Почему StackPanel не помещает текстовый блок слева и кнопку справа в Silverlight? - PullRequest
11 голосов
/ 16 июня 2009

ОК, я сдаюсь: что мне нужно изменить на StackPanel ниже, чтобы поставить:

  • текст слева от формы
  • кнопка справа от формы .

альтернативный текст 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 , на котором установлена ​​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>

альтернативный текст http://tanguay.info/web/external/silverlightDockPanel.png

Ответы [ 4 ]

11 голосов
/ 16 июня 2009

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

7 голосов
/ 16 июня 2009

Вы хотите сказать, что вы хотите, чтобы кнопка была выровнена справа от формы? Если это так, 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>
1 голос
/ 09 ноября 2011

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

xmlns:toolkit="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Toolkit"
1 голос
/ 16 июня 2009

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

...