【问题标题】:UWP XAML: How to get an auto-sized Grid with equal column widthsUWP XAML:如何获得具有相同列宽的自动调整大小的网格
【发布时间】:2019-03-04 16:46:15
【问题描述】:

我的目标是拥有一个包含两列控件(每列将包含一个垂直 StackPanel)的 Grid 面板,其中两列的宽度相同,但会根据它们包含的控件自动调整大小。因此,两个列的宽度都将等于任一列中最宽的控件。

我试着做这样的事情:

<Grid HorizontalAlignment="Center">
  <Grid.ColumnDefinitions>
    <ColumnDefinition Width="*" />
    <ColumnDefinition Width="*" />
  </Grid.ColumnDefinitions>
  <Button Grid.Column="0" Content="This is a wide button" HorizontalAlignment="Center" />
  <Button Grid.Column="1" Content="Button" HorizontalAlignment="Center" />
</Grid>

这里的问题是列宽不相等。效果与我为列定义指定Width="Auto" 相同。如果网格的水平对齐是拉伸而不是中心,则使用 * 宽度只会使列的宽度相等。 (除非列不再根据内容自动调整大小。)

我错过了什么吗?有没有办法根据网格单元格中的内容获得相等大小的列宽?在 UWP 应用中(所以 UniformGrid 之类的东西不可用)?

【问题讨论】:

    标签: xaml uwp uwp-xaml


    【解决方案1】:

    Telerik RadDataGrid 控件将帮助您处理您的场景

    从 Nuget 添加\安装 Telerik.UI.Xaml.Controls.Grid 以便在 UWP 应用中使用 RadDataGrid

    【讨论】:

      【解决方案2】:

      那是因为你将HorizontalAlignment设置为“Center”,Grid不会占据整个页面,只占据中心部分(它的水平空间取决于子元素的总和,在这种情况下它不会加起来填满整个页面。

      只需更改HorizontalAlignment = "Stretch" 以便整个可用空间和单个网格组件占据一半空间。

      <Grid HorizontalAlignment="Stretch" >
              <Grid.ColumnDefinitions>
                  <ColumnDefinition Width="*" />
                  <ColumnDefinition Width="*" />
              </Grid.ColumnDefinitions>
              <Button Grid.Column="0"
                      Content="This is a wide button"
                      HorizontalAlignment="Center" />
              <Button Grid.Column="1"
                      Content="Button"
                      HorizontalAlignment="Center"/>
          </Grid>
      

      图片:

      【讨论】:

      • 我特别说过我希望列的大小适合内容,而不是占据整个空间。
      【解决方案3】:

      Windows Community Toolkit 有一个统一网格控件,如果你添加到 NuGet 包中,你可以使用它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-07-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-07-03
        • 1970-01-01
        • 2018-05-06
        • 2019-02-10
        相关资源
        最近更新 更多