Вне диапазона при добавлении дочернего элемента с span к элементу сетки в C#

#xamarin #xamarin.forms

#xamarin #xamarin.forms

Вопрос:

У меня есть этот код. Все элементы сетки работают, за исключением самой первой строки с сеткой.Добавьте, где я пытаюсь сделать диапазон.

 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.
 

Имя параметра: bottom

Вот чего мне нужно достичь:

введите описание изображения здесь

Может кто-нибудь просмотреть, что у меня есть, и прокомментировать, что может быть не так?

Ответ №1:

из документации

  • справа — правый край диапазона столбца. Должно быть больше, чем осталось. Представление не будет занимать этот столбец, а остановится непосредственно перед ним.
  • bottom — нижний край диапазона строк. Должно быть больше top .

это несколько неинтуитивно — правый и нижний аргументы должны быть на 1 больше, чем вы ожидаете.