我是 Xamarin.Forms 的新手。现在我需要在我的页面中设计一个网格,网格是 3X2(2 行,3 列)。但是我需要这个网格中的所有单元格都是方形的,并且这个网格的宽度与其父 View 相匹配。
换句话说,假设屏幕(或此网格的父 View )的宽度为 3,则每列的宽度为 1。如何强制每行的高度正好为 1(以便网格的每个单元格的高度等于宽度)?
这是我的设计但不是工作:
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
</Grid>
是否有解决此问题的纯 XAML 解决方案?
感谢您的帮助。
最佳答案
Star
大小根据可用空间按方向自行调整,因此您需要通过重写 OnSizeAllocated
方法手动调整(调整子项大小时注意嵌套方法调用)。
Xaml:
<Grid x:Name="mainGrid">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
</Grid>
Xaml.cs
protected override void OnSizeAllocated(double width, double height)
{
base.OnSizeAllocated(width, height);
if (3 * height > 2 * height)
mainGrid.HeightRequest = 2.0 / 3 * width;
else
mainGrid.WidthRequest = 3.0 / 2 * height;
}
关于c# - 使用 Xamarin.Forms 创建一个每个单元格都是方形的 3X2 网格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39032843/