我的目标是拥有一个包含两列控件的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"
的效果相同。如果网格的“ HorizontalAlignment”为“ Stretch”而不是“ Center”,则仅使用*宽度可使列的宽度相等。 (除非这些列不再自动调整为适合内容的大小。)
我想念什么吗?有没有一种方法可以根据网格单元格中的内容获得相等大小的列宽?在UWP应用中(因此UniformGrid之类的东西不可用)?
答案 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>
图片:
答案 1 :(得分:2)
Windows Community Toolkit具有一个统一网格控件,如果您添加了NuGet程序包,则可以使用它。
答案 2 :(得分:0)
Telerik RadDataGrid控件将帮助您解决方案
从Nuget添加/安装Telerik.UI.Xaml.Controls.Grid,以便在您的UWP应用中使用RadDataGrid