我的目标是拥有一个包含两列控件的 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>
Run Code Online (Sandbox Code Playgroud)
这里的问题是列宽不相等。效果与我Width="Auto"为列定义指定的效果相同。如果网格的 HorizontalAlignment 为 Stretch 而不是 Center,则使用 * width 只会使列的宽度相等。(除此之外,列不再根据内容自动调整大小。)
我错过了什么吗?有没有办法根据网格单元格中的内容获得相同大小的列宽?在 UWP 应用程序中(因此 UniformGrid 之类的东西不可用)?
那是因为您设置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>
Run Code Online (Sandbox Code Playgroud)
图片:
| 归档时间: |
|
| 查看次数: |
922 次 |
| 最近记录: |