为什么文本框不会在堆栈面板 WPF 中拉伸?

Why doesn't a textbox stretch inside stackpanel WPF?

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="25*" />
        <ColumnDefinition Width="49*" />
        <ColumnDefinition Width="25*" />
    </Grid.ColumnDefinitions>
    <StackPanel Grid.Column="1" Margin="30" VerticalAlignment="Center">
        <StackPanel Orientation="Horizontal">
            <TextBlock Margin="0,0,5,0" Text="Username:" />
            <TextBox HorizontalAlignment="Stretch"/>
        </StackPanel>
    </StackPanel>

--Result image--

我正在努力使文本框填充当前 StackPanel 中 space 的其余部分。 但是 "Stretch" 属性似乎不起作用 - 为什么会这样?

是否有不同的方法或者我做错了什么?

A StackPanel 总是试图达到可能的最小值 height/width,具体取决于方向;因此,Stretch 无效。您可能想改用 DockPanel,它允许 children 拉伸:

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="25*" />
        <ColumnDefinition Width="49*" />
        <ColumnDefinition Width="25*" />
    </Grid.ColumnDefinitions>
    <StackPanel Grid.Column="1"
                Margin="30"
                VerticalAlignment="Center">
        <DockPanel>
            <TextBlock DockPanel.Dock="Left" Margin="0,0,5,0"
                       Text="Username:" />
            <TextBox HorizontalAlignment="Stretch"/>
        </DockPanel>
    </StackPanel>
</Grid>