网格不会在 StackPanel 内拉伸 [英] Grid doesn't stretch inside StackPanel

查看:28
本文介绍了网格不会在 StackPanel 内拉伸的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有两个高度不变的文本框,我想垂直堆叠文本框和一个网格.我尝试使用 stackpanel,但随后网格不会拉伸,并且始终保持相同的大小(尽可能小).

I have two textboxes with constant height, I want to vertically stack the textboxes and a grid. I tried with stackpanel but then the grid doesn't stretch and it stays with same size all the time (smallest as possible).

<StackPanel Orientation="Vertical" MaxWidth="110">
        <TextBox  Background="White" Height="40" Text="some text1"/>
        <TextBox  Background="White" Height="40" Text="some text2"/>
        <Grid x:Name="internalGrid">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="1*" MaxWidth="110"/>
                <ColumnDefinition Width="1*" MaxWidth="110"/>
            </Grid.ColumnDefinitions>
            <Grid.RowDefinitions>
                <RowDefinition Height="1*" MaxHeight="300"/>
                <RowDefinition Height="1*" MaxHeight="300"/>
            </Grid.RowDefinitions>
            <Button Grid.Column="0" Grid.Row="0"/>
            <Button Grid.Column="0" Grid.Row="1"/>
            <Button Grid.Column="1" Grid.Row="0"/>
            <Button Grid.Column="1" Grid.Row="1"/>
        </Grid>
    </StackPanel>

我也尝试使用 Grid 而不是 stackpanel 但是当我制作全屏应用程序时,文本框和内部网格之间存在边距

I also tried to use Grid instead of stackpanel but then when I make the app with full screen there is a margin between the textboxes and the internal grid

推荐答案

StackPanel 不是这样的.它占用最少的空间.改用网格并定义 RowDefinitions.默认情况下,网格内的空间在行之间平均分布(高度设置为*"),因此您必须将高度设置为自动",您希望行占据最小空间:

StackPanel doesn't behave like this. It occupies minimal required space. Use a Grid instead and define RowDefinitions. By default the space inside a Grid is equally distributed among the rows (Height is set to "*"), so you have to set the Height to "Auto" where you want the rows to occupy minimum space:

  <Grid MaxWidth="110">
    <Grid.RowDefinitions>
      <RowDefinition Height="Auto" />
      <RowDefinition Height="Auto" />
      <RowDefinition Height="*" />
    </Grid.RowDefinitions>

    <TextBox Grid.Row="0" Background="White"
              Height="40"
              Text="some text1" />
    <TextBox Grid.Row="1" Background="White"
              Height="40"
              Text="some text2" />

    <Grid Grid.Row="2" x:Name="internalGrid">
      <Grid.ColumnDefinitions>
        <ColumnDefinition Width="1*"
                          MaxWidth="110" />
        <ColumnDefinition Width="1*"
                          MaxWidth="110" />
      </Grid.ColumnDefinitions>
      <Grid.RowDefinitions>
        <RowDefinition Height="1*"
                       MaxHeight="300" />
        <RowDefinition Height="1*"
                       MaxHeight="300" />
      </Grid.RowDefinitions>

      <Button Grid.Column="0"
              Grid.Row="0" />
      <Button Grid.Column="0"
              Grid.Row="1" />
      <Button Grid.Column="1"
              Grid.Row="0" />
      <Button Grid.Column="1"
              Grid.Row="1" />
    </Grid>
  </Grid>

或者尝试一个 DockPanel:

<DockPanel MaxWidth="110" LastChildFill="True" >
    <TextBox DockPanel.Dock="Top" Background="White"
              Height="40"
              Text="some text1" />
    <TextBox DockPanel.Dock="Top" Background="White"
              Height="40"
              Text="some text2" />
    <Grid DockPanel.Dock="Top" x:Name="internalGrid">
      <Grid.ColumnDefinitions>
        <ColumnDefinition Width="1*"
                          MaxWidth="110" />
        <ColumnDefinition Width="1*"
                          MaxWidth="110" />
      </Grid.ColumnDefinitions>
      <Grid.RowDefinitions>
        <RowDefinition Height="1*"
                       MaxHeight="300" />
        <RowDefinition Height="1*"
                       MaxHeight="300" />
      </Grid.RowDefinitions>
      <Button Grid.Column="0"
              Grid.Row="0" />
      <Button Grid.Column="0"
              Grid.Row="1" />
      <Button Grid.Column="1"
              Grid.Row="0" />
      <Button Grid.Column="1"
              Grid.Row="1" />
    </Grid>
  </DockPanel>

这篇关于网格不会在 StackPanel 内拉伸的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆