Warm tip: This article is reproduced from serverfault.com, please click

xamarin-在C#中将带有跨度的子级添加到Grid元素时超出范围

(xamarin - Out of range when adding a child with a span to a Grid Element in C#)

发布于 2020-11-28 03:33:28

我有这个代码。除了Grid.Add的第一行之外,所有网格元素均正常工作。

var grid = new Grid();
grid.ColumnSpacing = 4;
grid.RowSpacing = 8;
grid.Margin = 20;
grid.ColumnDefinitions.Add(new ColumnDefinition() { Width = new GridLength(1, GridUnitType.Star) });
grid.ColumnDefinitions.Add(new ColumnDefinition() { Width = new GridLength(1, GridUnitType.Star) });
grid.ColumnDefinitions.Add(new ColumnDefinition() { Width = new GridLength(1, GridUnitType.Star) });
grid.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Star) });
grid.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Star) });
grid.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Star) });
grid.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Star) });

grid.Children.Add(new BaseButton("A", "A"), 0, 2, 0, 0);
grid.Children.Add(new BaseButton("B", "B"), 0, 1);
grid.Children.Add(new BaseButton("C", "C"), 1, 1);
grid.Children.Add(new BaseButton("D", "D"), 0, 2);
grid.Children.Add(new BaseButton("E", "E"), 1, 2);
grid.Children.Add(new BaseButton("F", "F"), 0, 3);
grid.Children.Add(new BaseButton("G", "G"), 1, 3);
grid.Children.Add(new BaseButton("H", "H"), 2, 3);

该行:

grid.Children.Add(new BaseButton("A", "A"), 0, 2, 0, 0);

给我一个错误的说法:

System.ArgumentOutOfRangeException has been thrown. Specified argument was out of the range of valid values.

参数名称:底部

这是我需要实现的目标:

在此处输入图片说明

任何人都可以查看我所拥有的并评论可能存在的问题吗?

Questioner
Alan2
Viewed
11
Jason 2020-11-28 12:19:07

文档

  • right-列跨度的右边缘。必须大于左侧。该视图不会占用此列,但会在此列之前停下。
  • bottom-行跨度的底部边缘。必须大于顶部。

这有点不直观-正确的参数和最低的参数必须比你期望的大1。