DockLayout
O DockLayout
é um layout em que as exibições podem ser encaixadas nas laterais do contêiner de layout.
A imagem abaixo mostra como um DockLayout
é estruturado conceitualmente. As exibições filho são encaixadas em uma das quatro posições de encaixe possíveis: Superior, Inferior, Esquerda ou Direita (equivalente a DockPosition.Top
, DockPosition.Bottom
, DockPosition.Left
e DockPosition.Right
). Os modos de exibição que não estão explicitamente encaixados (ou com DockPosition.None
) são exibidos no centro (ou entre as posições Superior / Inferior e Esquerda / Direita).
Criando um DockLayout
As seções a seguir abordam como usar um DockLayout
em C# e XAML.
XAML
Incluir o namespace XAML
Para usar o kit de ferramentas no XAML, o xmlns
a seguir precisa ser adicionado à sua página ou exibição:
xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit"
Portanto, o seguinte:
<ContentPage
x:Class="CommunityToolkit.Maui.Sample.Pages.MyPage"
xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml">
</ContentPage>
Seria modificado para incluir o xmlns
conforme o seguinte:
<ContentPage
x:Class="CommunityToolkit.Maui.Sample.Pages.MyPage"
xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit">
</ContentPage>
Usando o DockLayout
Um DockLayout
básico pode ser criado no XAML, conforme mostrado aqui:
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit"
x:Class="MyProject.MyContentPage">
<toolkit:DockLayout>
<Button toolkit:DockLayout.DockPosition="Top" Text="Top" HeightRequest="50" />
<Button toolkit:DockLayout.DockPosition="Bottom" Text="Bottom" HeightRequest="70" />
<Button toolkit:DockLayout.DockPosition="Left" Text="Left" WidthRequest="80" />
<Button toolkit:DockLayout.DockPosition="Right" Text="Right" WidthRequest="90" />
<Button Text="Center" />
</toolkit:DockLayout>
</ContentPage>
Para encaixe deEsquerda / Direita, um WidthRequest
deve ser especificado. Para Superior / Inferior, um HeightRequest
define o tamanho do modo de exibição filho ao longo da direção de encaixe. As direções ortogonais são sempre calculadas implicitamente pelo gerente de DockLayout
.
C#
Um DockLayout
pode ser construído convenientemente em C# conforme mostrado aqui:
using CommunityToolkit.Maui.Layouts;
var page = new ContentPage
{
Content = new DockLayout
{
{ new Button { Text = "Top", HeightRequest = 50 }, DockPosition.Top },
{ new Button { Text = "Bottom", HeightRequest = 70 }, DockPosition.Bottom },
{ new Button { Text = "Left", WidthRequest = 80 }, DockPosition.Left },
{ new Button { Text = "Right", WidthRequest = 90 }, DockPosition.Right },
{ new Button { Text = "Center" } },
}
};
Observação: DockPosition.None
é o padrão e pode ser omitido.
Definição da posição de encaixe
Para definir a posição de encaixe de C#, use DockLayout.SetDockPosition(IView, DockPosition)
para aplicar a propriedade DockPosition
anexada.
var button = new Button { Text = "Top", HeightRequest = 50 };
DockLayout.SetDockPosition(button, DockPosition.Top);
Personalização de um DockLayout
Um contêiner de DockLayout
dá suporte a Padding
arbitrárias, bem como a várias propriedades DockLayout
específicas para personalização. Um exemplo em XAML com todas as opções disponíveis é dado aqui:
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit"
x:Class="MyProject.MyContentPage">
<toolkit:DockLayout HeightRequest="400"
WidthRequest="600"
Padding="10,20,30,40"
VerticalSpacing="10"
HorizontalSpacing="15"
ShouldExpandLastChild="False">
...
</toolkit:DockLayout>
</ContentPage>
Propriedades
Propriedade | Type | Descrição |
---|---|---|
Padding |
Thickness |
Obtém ou define o preenchimento ao redor do contêiner de layout (herdado de Layout ). |
HorizontalSpacing |
double |
Obtém ou define o espaçamento horizontal entre exibições encaixadas. |
VerticalSpacing |
double |
Obtém ou define o espaçamento vertical entre as exibições encaixadas. |
HorizontalSpacing e VerticalSpacing são aplicados entre exibições vizinhas no DockLayout . Por exemplo, HorizontalSpacing é adicionado entre modos de exibição Esquerdo, Nenhum e Direitp, mas também entre exibições vizinhas no mesmo DockPosition , como várias exibições encaixadas à Esquerda. VerticalSpacing é renderizado entre exibições empilhadas verticalmente nas posições Superior, Nenhume Inferior. |
||
ShouldExpandLastChild |
bool |
Se verdadeiro, o último filho será expandido para preencher o espaço restante (padrão: true ). |
Observações adicionais
Se DockLayout
for usado em um local restrita espacialmente (especialmente com um tamanho especificado por meio de HeightRequest
ou WidthRequest
no contêiner), a precedência será fornecida pela ordem em que os modos de exibição filho são adicionados ao contêiner de DockLayout
. Consequentemente, sempre que não houver espaço suficiente para que todas as exibições filho sejam renderizadas, os filhos de menor prioridade (que foram adicionados por último) serão removidos após a renderização. Por esse motivo, você sempre deve verificar se o tamanho do contêiner cobre pelo menos o tamanho mínimo de todas as suas exibições filho.
Exemplos
Encontre um exemplo do recurso DockLayout
em ação na Amostra de aplicativo do Kit de Ferramentas da Comunidade do .NET MAUI.
API
O código-fonte do DockLayout
pode ser encontrado no repositório GitHub do .NET MAUI Community Toolkit em DockLayout e DockLayoutManager.
.NET MAUI Community Toolkit