uwpxaml:如何获得具有相等列宽的自动调整大小的网格
我的目标是使网格面板具有两列控件(每列将包含一个垂直StackPanel),其中两列的宽度相同,但根据它们包含的控件自动调整大小。因此,两个列宽都将等于任一列中最宽的控件 我试过这样做:uwpxaml:如何获得具有相等列宽的自动调整大小的网格,xaml,uwp,uwp-xaml,Xaml,Uwp,Uwp Xaml,我的目标是使网格面板具有两列控件(每列将包含一个垂直StackPanel),其中两列的宽度相同,但根据它们包含的控件自动调整大小。因此,两个列宽都将等于任一列中最宽的控件 我试过这样做: <Grid HorizontalAlignment="Center"> <Grid.ColumnDefinitions> <ColumnDefinition Width="*" /> <ColumnDefinition Width="*" />
<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之类的东西不可用)?有一个统一的网格控件,如果您添加到NuGet包中,可以使用该控件。这是因为您已将
水平对齐设置为“中心”,网格不会占据整个页面,而只占据中心部分(它的水平空间取决于子元素的总和,在这种情况下,它加起来不会填满整个页面
只需更改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>
图片:
Telerik RadDataGrid控件将帮助您解决方案
从Nuget添加\安装Telerik.UI.Xaml.Controls.Grid,以便在UWP应用程序中使用RadDataGrid我特别说过,我希望列的大小与内容相符,而不是占用整个空间。