首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >WPF TextBox不会填写StackPanel

WPF TextBox不会填写StackPanel
EN

Stack Overflow用户
提问于 2010-09-18 00:16:07
回答 5查看 74.8K关注 0票数 102

我在StackPanel中有一个TextBox控件,它的Orientation设置为Horizontal,但无法让TextBox填充剩余的StackPanel空间。

XAML:

代码语言:javascript
复制
<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Height="180" Width="324">

    <StackPanel Background="Orange" Orientation="Horizontal" >
        <TextBlock Text="a label" Margin="5" VerticalAlignment="Center"/>
        <TextBox Height="25" HorizontalAlignment="Stretch" Width="Auto"/>
    </StackPanel>
</Window>

它看起来是这样的:

为什么该TextBox不填充StackPanel?

我知道我可以通过使用Grid控件来获得更多的控件,我只是对布局感到困惑。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-09-18 00:21:55

我在StackPanel上也遇到过同样的问题,而且它的行为是“设计出来的”。StackPanel旨在“堆叠”甚至在可见区域之外的东西,因此它不允许您填充堆叠维度中的剩余空间。

可以使用LastChildFill设置为trueDockPanel,并将所有非填充控件停靠到Left以模拟所需的效果。

代码语言:javascript
复制
<DockPanel Background="Orange" LastChildFill="True">
    <TextBlock Text="a label" Margin="5" 
        DockPanel.Dock="Left" VerticalAlignment="Center"/>
    <TextBox Height="25" Width="Auto"/>
</DockPanel >
票数 160
EN

Stack Overflow用户

发布于 2018-02-12 22:05:07

我建议使用Grid来代替:

代码语言:javascript
复制
<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Height="180" Width="324">

    <Grid Background="Orange">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="Auto"/>
            <ColumnDefinition Width="*"/>
        </Grid.ColumnDefinitions>

        <TextBlock Grid.Column="0" Text="a label" 
           VerticalAlignment="Center"/>
        <TextBox  Grid.Column="1"/>
    </Grid>
</Window>

解决此问题的另一种方法是将标签堆叠在顶部而不是右侧。我注意到UWP有一个内置的header属性,您可以使用它,但不确定WPF的header属性是否存在。

代码语言:javascript
复制
<TextBox Header="MyLabel" />
票数 21
EN

Stack Overflow用户

发布于 2019-11-04 13:56:39

按实际主题列出的旧问题:

代码语言:javascript
复制
HorizontalAlignment="Stretch"

是必备的东西。只需确保删除width即可。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3737077

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档