xaml - UWP XAML : How to get an auto-sized Grid with equal column widths

标签 xaml uwp uwp-xaml

我的目标是拥有一个包含两列控件的网格面板(每列将包含一个垂直 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 之类的东西不可用)?

最佳答案

那是因为你设置了 Horizo​​ntalAlignment 为 "Center", Grid 不会占据整个页面只占据中心部分(它的水平空间取决于子元素的总和,在这种情况下它不会加起来填充整页。

只需更改 Horizo​​ntalAlignment = "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

关于xaml - UWP XAML : How to get an auto-sized Grid with equal column widths,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52559523/

相关文章:

c# - 彩色启动画面 - UWP 应用程序

c# - XAML 群岛,尝试发布 WPF 项目时总是出现错误。还有更多人遇到同样的问题吗?

mvvm - uwp - bool 值到可见性转换器不起作用

c# - 替换Azure存储中的内容

c# - UWP 删除 Gridview 中的焦点边框

windows - 如何在 UWP 中捕获 PC 屏幕和录制音频?

c# - 编码问题。我哪里错了?

wpf - 为什么这个扩展坞面板不起作用?

c# - 我的 Windows 应用商店应用程序在关闭后仍在 Debug模式下运行

xaml - UWP 应用的调试和 Release模式