wpf网格和stackpanel填充

时间:2014-10-22 11:04:10

标签: c# wpf

我有一个2行的网格,一个用于名称和按钮,另一个用于输出。

我希望第一行拉伸整个宽度,按钮对齐右边。

想知道我错过了什么,因为我认为堆叠板会填充宽度。

<Window x:Class="Sample.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>

        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*"/>
        </Grid.ColumnDefinitions>

        <StackPanel Orientation="Horizontal" Grid.Row="0" Grid.Column="0" >
            <TextBox Name="NameTextBox" MinWidth="150" HorizontalAlignment="Stretch"/>
            <Button Margin="10,0" Name="AlertButton" Content="Say Hello" HorizontalAlignment="Stretch" />
        </StackPanel>

        <TextBox  Name="OutpuTextBox" MinLines="5" Grid.Row="1" Grid.Column="0"/>
    </Grid>
</Window>

1 个答案:

答案 0 :(得分:1)

水平StackPanel忽略其子项的水平对齐方式。您可以将布局更改为2列,并将Button放在第一行的第二列中,并将底部TextBox设置为跨越2列

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="*"/>
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*"/>
        <ColumnDefinition Width="Auto"/>
    </Grid.ColumnDefinitions>
    <TextBox Name="NameTextBox" MinWidth="150" HorizontalAlignment="Stretch"/>
    <Button Margin="10,0" Name="AlertButton" Content="Say Hello" HorizontalAlignment="Stretch" Grid.Column="1" />
    <TextBox  Name="OutpuTextBox" MinLines="5" Grid.Row="1" Grid.ColumnSpan="2"/>
</Grid>