UWP XAML:如何获取具有相等列宽的自动调整大小的网格

时间:2018-09-28 16:39:19

标签: xaml uwp uwp-xaml

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

我试图做这样的事情:

<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"的效果相同。如果网格的“ Horizo​​ntalAlignment”为“ Stretch”而不是“ Center”,则仅使用*宽度可使列的宽度相等。 (除非这些列不再自动调整为适合内容的大小。)

我想念什么吗?有没有一种方法可以根据网格单元格中的内容获得相等大小的列宽?在UWP应用中(因此UniformGrid之类的东西不可用)?

3 个答案:

答案 0 :(得分:3)

那是因为您已经将HorizontalAlignment设置为“ Center”,所以网格将不会占据整个页面,而只会占据中心部分(它的水平空间取决于子元素的总和,在这种情况下,它将不会累加整个页面)

只需更改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>

图片:

enter image description here

答案 1 :(得分:2)

Windows Community Toolkit具有一个统一网格控件,如果您添加了NuGet程序包,则可以使用它。

答案 2 :(得分:0)

Telerik RadDataGrid控件将帮助您解决方案

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