wpf网格和堆叠面板填充

本文关键字:填充 网格 wpf | 更新日期: 2023-09-27 18:27:22

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

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

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

<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>

wpf网格和堆叠面板填充

水平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>