Проблема в том, что я пытаюсь добавить несколько дочерних элементов в одну ячейку сетки, но они накладываются друг на друга.
Элементы накладываются друг на друга, потому что вы добавляетеих в той же позиции в Grid
.
Чтобы разместить представления в сетке, вам нужно добавить их как дочерние элементы в сетку, а затем указать, к какой строке и столбцу они принадлежат.
Последние два параметра в функции grid.Children.Add
указывают положение элемента в сетке.Например, существует таблица с двумя строками и двумя столбцами, тогда (0,0) означает top left
, а (1,1) означает bottom right
.
// left, top
grid.Children.Add(topLeft, 0, 0);
grid.Children.Add(topRight, 1, 0);
grid.Children.Add(bottomLeft, 0, 1);
grid.Children.Add(bottomRight, 1, 1);
Назад к вашему коду,Вы добавляете все свои элементы в (0,0), чтобы они отображались в одной и той же позиции.
gOut.Children.Add(lblBez, 0, 0);
gOut.Children.Add(lblStatus, 0, 0);
gOut.Children.Add(btnIn, 0, 0);
gOut.Children.Add(btnOut, 0, 0);
Другая проблема в вашем коде заключается в том, что вам нужен Layout container
(например, stacklayout
или другой *).1023 * макеты ) как сказано Jason
для управления вашими элементами.Потому что вы создаете их в цикле foreach
, и в каждом цикле вы добавляете одну и ту же вещь с одинаковым положением в gOut
.
Я думаю, что ПРАВИЛЬНЫЙ способ - создать Grid
с вашими labels
и imageButtons
с правильной позицией в каждом цикле. Затем добавьте это Grid
в контейнер макетов (этот контейнер макетов используется длямакет сетки, созданной в каждом цикле).Наконец, установите это layout container
в качестве содержимого ContentPage, Content = layout container
, чтобы отобразить ваши элементы.
Посмотрите на этот документ , который может вам помочь, и есть также образец там.