#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 больше, чем вы ожидаете.