为什么文本框不能在Stackpanel WPF中延伸?

时间:2018-07-13 08:36:36

标签: wpf wpf-controls stretch

<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内部的其余空间。 但是“伸展”的提议似乎无效-为什么?

是否有其他方法或我做错了什么?

1 个答案:

答案 0 :(得分:0)

StackPanel始终尝试根据方向来实现最小的高度/宽度;因此Stretch无效。您可能要改用DockPanel,它可以使孩子们伸展:

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

enter image description here