【问题标题】:WPF: StackPanel item auto-height questionWPF:StackPanel 项目自动高度问题
【发布时间】:2010-11-25 10:52:04
【问题描述】:

我有一个 Stackpanel 并希望项目根据其内容自动设置它们的大小,但项目应该自动填充 Stackpanel 的高度(但 Stackpanel 应该根据最大项目具有自动高度)。我也试过 WrapPanel 有同样的问题。

我希望 TextBox“测试”垂直居中并根据其文本自动调整大小。

                    <TextBox Name="test" VerticalContentAlignment="Center">test</TextBox>

                    <StackPanel  Name="ParameterList" Orientation="Vertical">

                            <TextBox Name="ParamComment" Foreground="Gray">no comment..</TextBox>


                            <TextBox Name="ParamComment2" Foreground="Gray">no comment..</TextBox>
                    </StackPanel>                                               
                </WrapPanel>

【问题讨论】:

    标签: wpf user-interface xaml layout controls


    【解决方案1】:

    你的意思是这样的?

        |stackpanelitem
    test|stackpanelitem
        |stackpanelitem
    

    然后试试这个:

    <Grid>
      <Grid.ColumnDefinitions>
        <ColumnDefinition Width="Auto"/>
        <ColumnDefinition Width="*"/>
      </Grid.ColumnDefinitions>
      <TextBox VerticalAlignment="Center" Text="test"/>
      <StackPanel Grid.Column="1">
        <TextBox Text="stackpanelitem"/>
        <!-- other items -->
      </StackPanel>
    </Grid>
    

    【讨论】:

    • 是的,我就是这个意思。感谢您的回答。为什么 StackPanel 有 Grid.Column="1" 而 TextBox 没有 Grid.Column="0"? “自动”和“*”有什么区别?
    • 如您所见,我为网格定义了两列。 Grid.Column 是一个附加属性,仅指定此控件放置在网格的哪一列中。 0 是默认值,因此没有必要。自动表示该列将自动调整为最宽的项目,* 表示它将占用所有可用空间。如果我指定了宽度为 * 的第三列,那么这两列将各自使用剩余空间的一半。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-16
    相关资源
    最近更新 更多