xaml - 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"
为列定义指定的效果相同。如果网格的水平对齐是拉伸而不是中心,则使用 * 宽度只会使列的宽度相等。(除此之外,列不再根据内容自动调整大小。)
我错过了什么吗?有没有办法根据网格单元格中的内容获得相等大小的列宽?在 UWP 应用程序中(所以 UniformGrid 之类的东西不可用)?
解决方案
那是因为你设置HorizontalAlignment
了“中心”,网格不会占据整个页面,只占据中心部分(它的水平空间取决于子元素的总和,在这种情况下它不会加起来填满整个页面。
只需更改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>
图片:
推荐阅读
- javascript - 如何确保在导航到另一个页面之前完成减速器响应操作?
- azure-cosmosdb - 在 Gremlin (Cosmos) 中投影属性值列表
- python - 为什么不将子元素放置在 BoxSizer 中
- node.js - 为 Node.js 应用程序创建用户友好的安装程序
- android - 警报管理器无法显示通知?
- ssl - Windows 10 WebDAV 中断到 Internet 服务(例如托管服务提供商)
- swift - Xcode 无法在助理编辑器中为 UICollectionReusableView 类打开正确的类
- c# - Windows 窗体 C# 线性图使线条无限
- firebase - 如何组合多个 Firestore 查询
- xamarin.forms - 基于 iOS 构建的 AppCenter 从未完成安装