Расширения сетки
Расширения Grid
предоставляют ряд методов расширения, поддерживающих настройку Grid
.
Определение строк и столбцов
Чтобы определить строки и столбцы для a Grid
, CommunityToolkit.Maui.Markup
предоставляет два вспомогательных метода:
Columns.Define
Rows.Define
Чтобы использовать эти вспомогательные методы, сначала добавьте следующую using static
директиву в верхнюю часть нашего класса:
using static CommunityToolkit.Maui.Markup.GridRowsColumns;
После добавления приведенной выше using static
директивы мы можем определить размеры строк и столбцов, используя следующие значения, чтобы задать GridLength
следующие значения:
Microsoft.Maui.GridLength | XAML | Сообщество набор средств. Maui.Markup.GridRowsColumns |
---|---|---|
GridLength.Auto |
Auto |
Auto |
GridLength.Star |
* |
Star |
new GridLength(2, GridLength.Star) |
2* |
Stars(2) |
new GridLength(20, GridLength.Absolute) |
20 |
20 |
Сложив все вместе, теперь можно определить строки сетки и столбцы:
new Grid
{
ColumnDefinitions = Columns.Define(30, Star, Stars(2)),
RowDefinitions = Rows.Define(Auto, Star),
};
Пример
В следующем примере показано, как создать с Grid
2 строками:
- Размер строки 0:
GridLength.Auto
- Размер строки 1:
GridLength.Star
В следующем примере показано, как создать с Grid
3 столбцами:
- Размер столбца 0:
new GridLength(30, GridLength.Absolute)
- Размер столбца 1:
GridLength.Star
- Размер столбца 2: :
new GridLength(GridLength.Star, 2)
// Add this using static to enable Columns.Define and Rows.Define
using static CommunityToolkit.Maui.Markup.GridRowsColumns;
// ...
new Grid
{
ColumnDefinitions = Columns.Define(30, Star, Stars(2)),
RowDefinitions = Rows.Define(Auto, Star),
Children =
{
new Label()
.Text("This Label is in Row 0 Column 0")
.Row(0).Column(0)
new Label()
.Text("This Label is in Row 0 Column 1")
.Row(0).Column(1)
new Label()
.Text("This Label is in Row 0 Column 2")
.Row(1).Column(2)
new Label()
.Text("This Label is in Row 1 Column 0")
.Row(1).Column(0)
new Label()
.Text("This Label is in Row 1 Column 1")
.Row(1).Column(1)
new Label()
.Text("This Label is in Row 1 Column 2")
.Row(1).Column(2)
}
}
Определение строк и столбцов с помощью перечислений
Мы также можем определить и присвоить имя нашим строкам и столбцам, создав настраиваемый Enum
объект. Enum
Использование позволяет определить имя для каждой строки и столбца, что упрощает размещение элементов управления в элементе Grid
управления.
Пример
В следующем примере показано, как определить строки и столбцы для Grid
двух Enum
s.
Чтобы использовать эти вспомогательные методы, сначала добавьте следующую using static
директиву:
using static CommunityToolkit.Maui.Markup.GridRowsColumns;
Затем мы определим имена наших строк и столбцов, создав настраиваемый Enum
для каждого из них:
enum Row { Username, Password, Submit }
enum Column { Description, UserInput }
Затем мы заполняем Grid
эти Enum
значения, чтобы определить строки и столбцы, а затем назначить каждому элементу управления строку + столбец соответствующим образом:
using static CommunityToolkit.Maui.Markup.GridRowsColumns;
class LoginPage : ContentPage
{
public LoginPage()
{
Content = new Grid
{
RowDefinitions = Rows.Define(
(Row.Username, 30),
(Row.Password, 30),
(Row.Submit, Star)),
ColumnDefinitions = Columns.Define(
(Column.Description, Star),
(Column.UserInput, Star)),
Children =
{
new Label()
.Text("Username")
.Row(Row.Username).Column(Column.Description),
new Entry()
.Placeholder("Username")
.Row(Row.Username).Column(Column.UserInput),
new Label()
.Text("Password")
.Row(Row.Password).Column(Column.Description),
new Entry { IsPassword = true }
.Placeholder("Password")
.Row(Row.Password).Column(Column.UserInput),
new Button()
.Text("Submit")
.Row(Row.Password).RowSpan(All<Column>())
}
}
}
enum Row { Username, Password, Submit }
enum Column { Description, UserInput }
}
Строка
Метод Row
задает Grid.RowProperty
и Grid.RowSpanProperty
на объекте BindableObject
.
Следующий пример задает Grid.RowProperty
значение to 0
Button
и его Grid.RowSpanProperty
2
, а затем задает Grid.RowProperty
значение 1
:Label
:
new Grid
{
Children =
{
new Button()
.Text("This Button is in Row 0 and spans 2 Columns")
.Row(0, 2),
new Label()
.Text("This Label is in Row 1 and does not span multiple columns")
.Row(1)
}
};
Column
Метод Column
задает Grid.ColumnProperty
и Grid.ColumnSpanProperty
на объекте BindableObject
.
Следующий пример задает Grid.ColumnProperty
значение to 0
Button
и его Grid.ColumnSpanProperty
2
, а затем задает Grid.ColumnProperty
значение 1
:Label
:
new Grid
{
Children =
{
new Button()
.Text("This Button is in Row 0 and spans 2 Columns")
.Column(0, 2),
new Label()
.Text("This Label is in Row 1 and does not span multiple columns")
.Column(1)
}
};
RowSpan
Этот RowSpan
метод позволяет определить, сколько строк сетки будет охватывать элемент управления. Т.е. если у нас Grid
есть 3 строки, убедитесь, .RowSpan(3)
что элемент управления охватывает все 3 столбца.
Ниже приведен пример Button
вертикального диапазона между 3 строками:
new Button()
.Text("This Button Spans Across 3 Grid Rows")
.RowSpan(3)
Все<TEnum>
При определении строк с помощью элемента Enum
управления мы можем использовать All<TEnum>()
для обеспечения вертикального диапазона элементов управления по каждой строке:
enum Row { Username, Password, Submit }
// ...
new Button()
.Text("This Button Spans Vertically Across Every Row Defined in our Enum")
.RowSpan(All<Row>());
ColumnSpan
Этот ColumnSpan
метод позволяет определить, сколько столбцов сетки будет охватывать элемент управления. Т. е. если у нас Grid
есть 3 столбца, .ColumnSpan(3)
элемент управления будет охватывать все 3 столбца.
Ниже приведен пример Button
горизонтального диапазона между 3 столбцами:
new Button()
.Text("This Button Spans Across 3 Grid Columns")
.ColumnSpan(3)
Все<TEnum>
При определении строк с помощью объекта Enum
мы можем использовать All<TEnum>()
для обеспечения горизонтального диапазона элементов управления по каждому столбцу:
enum Column { Description, UserInput }
// ...
new Button()
.Text("This Button Spans Vertically Across Every Row Defined in our Enum")
.ColumnSpan(All<Column>());
Последний<TEnum>
При определении строк и столбцов с помощью элемента Enum
управления можно убедиться, что элемент управления добавляется в последнюю строку или последний столбец с помощью .Last<TEnum>()
.
В этом примере показано, как добавить в окончательную Button
строку и столбец в Grid
enum Row { Username, Password, Submit }
enum Column { Description, UserInput }
// ...
new Button()
.Text("This Button Spans Vertically Across Every Row Defined in our Enum")
.Row(Last<Row>()).Column(Last<Column>());
.NET MAUI Community Toolkit
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по