首页 > 解决方案 > 为什么文本框不在 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>

--结果图--

我试图做到这一点,以便文本框将填充当前 StackPanel 内的其余空间。但是“拉伸”属性似乎不起作用 - 为什么会这样?

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

标签: wpfwpf-controlsstretch

解决方案


AStackPanel总是试图实现最小可能的高度/宽度,具体取决于方向;因此,Stretch没有效果。您可能想要使用 aDockPanel来代替,它允许孩子们伸展:

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

在此处输入图像描述


推荐阅读