Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
As Grid extensões fornecem uma série de métodos de extensão que suportam a configuração de um Grid.
Definição de Linhas + Colunas
Para definir linhas e colunas para um Grid, CommunityToolkit.Maui.Markup fornece dois métodos auxiliares:
Columns.DefineRows.Define
Para tirar partido destes métodos auxiliares, adicionamos primeiro a diretiva using static seguinte no início da nossa classe:
using static CommunityToolkit.Maui.Markup.GridRowsColumns;
Após adicionar a diretiva acima using static , podemos então definir os tamanhos das nossas Linhas + Colunas usando os seguintes valores para definir o GridLength:
| Microsoft. Maui.GridLength | XAML | CommunityToolkit.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 |
Juntando tudo, podemos agora definir as Linhas + Colunas de uma grelha:
new Grid
{
ColumnDefinitions = Columns.Define(30, Star, Stars(2)),
RowDefinitions = Rows.Define(Auto, Star),
};
Example
O exemplo seguinte demonstra como criar um Grid com 2 linhas:
- Tamanho da Fila 0:
GridLength.Auto - Tamanho da Fila 1:
GridLength.Star
O exemplo seguinte demonstra como criar um Grid com 3 Colunas:
- Tamanho da Coluna 0:
new GridLength(30, GridLength.Absolute) - Tamanho da Coluna 1:
GridLength.Star - Coluna 2 Tamanho:
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)
}
}
Definição de Linhas + Colunas Usando Enums
Também podemos definir e dar nome às nossas linhas e colunas criando um elemento personalizado Enum. Usar um Enum permite-nos definir um nome para cada linha e coluna, facilitando a colocação dos nossos controlos no Grid.
Example
O exemplo seguinte demonstra como definir linhas + colunas para a Grid usando dois Enums.
Para tirar partido destes métodos auxiliares, acrescentamos primeiro a seguinte using static diretiva:
using static CommunityToolkit.Maui.Markup.GridRowsColumns;
Depois definimos os nomes das nossas Linhas e Colunas criando um personalizado Enum para cada uma:
enum Row { Username, Password, Submit }
enum Column { Description, UserInput }
Depois, preenchemos o nosso Grid usando esses Enums para definir as nossas linhas + colunas e atribuir cada controlo a uma linha + coluna em conformidade:
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 }
}
Linha
O método Row define o Grid.RowProperty e o Grid.RowSpanProperty num BindableObject.
O exemplo seguinte define o Grid.RowProperty de um Button para 0 e o seu Grid.RowSpanProperty para 2, depois define o Grid.RowProperty de um Label para 1:
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)
}
};
Coluna
O método Column define o Grid.ColumnProperty e Grid.ColumnSpanProperty num BindableObject.
O exemplo seguinte define o Grid.ColumnProperty de um Button para 0 e o seu Grid.ColumnSpanProperty para 2, depois define o Grid.ColumnProperty de um Label para 1:
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
O RowSpan método permite-nos definir quantas linhas de grelha um controlo irá abranger. Ou seja, se o nosso Grid tiver 3 linhas, .RowSpan(3) garantirá que o controlo abrange as 3 colunas.
Aqui está um exemplo de um Button que se estende verticalmente por 3 filas:
new Button()
.Text("This Button Spans Across 3 Grid Rows")
.RowSpan(3)
Todos<TEnum>
Ao definir as nossas Linhas usando um Enum, podemos usar All<TEnum>() para garantir que o nosso controlo se estende verticalmente por todas as linhas:
enum Row { Username, Password, Submit }
// ...
new Button()
.Text("This Button Spans Vertically Across Every Row Defined in our Enum")
.RowSpan(All<Row>());
Abrangência da coluna
O método ColumnSpan permite-nos definir quantas colunas da grelha um controlo irá ocupar. Ou seja, se o nosso Grid tiver 3 colunas, .ColumnSpan(3) garantirá que o controlo abrange as 3 colunas.
Aqui está um exemplo de um Button que se estende horizontalmente por 3 Colunas:
new Button()
.Text("This Button Spans Across 3 Grid Columns")
.ColumnSpan(3)
Todos<TEnum>
Ao definir as nossas linhas usando um Enum, podemos usar All<TEnum>() para garantir que o nosso controlo se estende horizontalmente por cada coluna:
enum Column { Description, UserInput }
// ...
new Button()
.Text("This Button Spans Vertically Across Every Row Defined in our Enum")
.ColumnSpan(All<Column>());
Último<TEnum>
Ao definir as nossas linhas e colunas usando um Enum, podemos garantir que um controlo é adicionado à última linha ou à última coluna usando .Last<TEnum>().
Este exemplo demonstra como adicionar a Button à última linha e coluna em um 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