VerticalStackLayout
Uživatelské rozhraní .NET Multi-Platform App UI (.NET MAUI) VerticalStackLayout organizuje podřízená zobrazení v jednorozměrném svislém zásobníku a je výkonnější alternativou StackLayoutk . Kromě toho VerticalStackLayout lze použít jako nadřazené rozložení, které obsahuje jiná podřízená rozložení.
Definuje VerticalStackLayout následující vlastnosti:
Spacing
, typudouble
označuje velikost mezery mezi každým podřízeným zobrazením. Výchozí hodnota této vlastnosti je 0.
Tato vlastnost je podporována objektem BindableProperty , což znamená, že může být cílem datových vazeb a styl.
Následující XAML ukazuje, jak vytvořit VerticalStackLayout , která obsahuje různá podřízená zobrazení:
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="StackLayoutDemos.Views.VerticalStackLayoutPage">
<VerticalStackLayout Margin="20">
<Label Text="Primary colors" />
<Rectangle Fill="Red"
HeightRequest="30"
WidthRequest="300" />
<Rectangle Fill="Yellow"
HeightRequest="30"
WidthRequest="300" />
<Rectangle Fill="Blue"
HeightRequest="30"
WidthRequest="300" />
<Label Text="Secondary colors" />
<Rectangle Fill="Green"
HeightRequest="30"
WidthRequest="300" />
<Rectangle Fill="Orange"
HeightRequest="30"
WidthRequest="300" />
<Rectangle Fill="Purple"
HeightRequest="30"
WidthRequest="300" />
</VerticalStackLayout>
</ContentPage>
Tento příklad vytvoří VerticalStackLayout obsahující Label objekty a Rectangle objekty. Ve výchozím nastavení není mezi podřízenými zobrazeními mezera:
Poznámka:
Hodnota Margin
vlastnosti představuje vzdálenost mezi elementem a jeho sousedními prvky. Další informace naleznete v tématu Ovládací prvky pozice.
Mezera mezi podřízenými zobrazeními
Mezery mezi podřízenými zobrazeními v objektu VerticalStackLayout lze změnit nastavením Spacing
vlastnosti na double
hodnotu:
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="StackLayoutDemos.Views.VerticalStackLayoutPage">
<VerticalStackLayout Margin="20"
Spacing="10">
<Label Text="Primary colors" />
<Rectangle Fill="Red"
HeightRequest="30"
WidthRequest="300" />
<Rectangle Fill="Yellow"
HeightRequest="30"
WidthRequest="300" />
<Rectangle Fill="Blue"
HeightRequest="30"
WidthRequest="300" />
<Label Text="Secondary colors" />
<Rectangle Fill="Green"
HeightRequest="30"
WidthRequest="300" />
<Rectangle Fill="Orange"
HeightRequest="30"
WidthRequest="300" />
<Rectangle Fill="Purple"
HeightRequest="30"
WidthRequest="300" />
</VerticalStackLayout>
</ContentPage>
Tento příklad vytvoří VerticalStackLayout obsahující objekty Rectangle Label, které mají deset jednotek nezávislých na zařízení mezi podřízenými zobrazeními:
Tip
Vlastnost Spacing
lze nastavit na záporné hodnoty, aby se podřízená zobrazení překrývala.
Umístění a velikost podřízených zobrazení
Velikost a umístění podřízených zobrazení v rámci závisí VerticalStackLayout na hodnotách podřízených zobrazení HeightRequest a WidthRequest vlastností a na hodnotách jejich HorizontalOptions
vlastností. V podřízenýchzobrazeních VerticalStackLayout
Vlastnosti HorizontalOptions
objektu VerticalStackLayouta jeho podřízených zobrazení lze nastavit na pole ze LayoutOptions
struktury, která zapouzdřuje předvolbu rozložení zarovnání . Tato předvolba rozložení určuje umístění a velikost podřízeného zobrazení v rámci nadřazeného rozložení.
Tip
Nenastavujte HorizontalOptions
vlastnost vlastnosti, VerticalStackLayout pokud ji nepotřebujete. Výchozí hodnota LayoutOptions.Fill
umožňuje nejlepší optimalizaci rozložení. Změna této vlastnosti má náklady a spotřebovává paměť, i když ji nastavíte zpět na výchozí hodnotu.
Následující příklad XAML nastaví předvolby zarovnání pro každé podřízené zobrazení v :VerticalStackLayout
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="StackLayoutDemos.Views.VerticalStackLayoutPage">
<VerticalStackLayout Margin="20"
Spacing="6">
<Label Text="Start"
BackgroundColor="Gray"
HorizontalOptions="Start" />
<Label Text="Center"
BackgroundColor="Gray"
HorizontalOptions="Center" />
<Label Text="End"
BackgroundColor="Gray"
HorizontalOptions="End" />
<Label Text="Fill"
BackgroundColor="Gray"
HorizontalOptions="Fill" />
</VerticalStackLayout>
</ContentPage>
V tomto příkladu jsou předvolby zarovnání nastaveny na Label objekty pro řízení jejich umístění v rámci VerticalStackLayout. Pole Start
, , End
Center
a Fill
jsou použity k definování zarovnání Label objektů v rámci nadřazeného VerticalStackLayoutobjektu :
Respektuje VerticalStackLayout pouze předvolby zarovnání u podřízených zobrazení, která jsou v opačném směru než orientace rozložení. Podřízená Label zobrazení v rámci VerticalStackLayout sady jejich HorizontalOptions
vlastností proto na jedno z polí zarovnání:
Start
, která umístí na Label levou stranu VerticalStackLayout.Center
: Zarovná objekt Label v objektu VerticalStackLayout na střed.End
, která umístí na Label pravou stranu VerticalStackLayout.Fill
: Zajistí, aby objekt Label vyplnil celou šířku objektu VerticalStackLayout.
Nest VerticalStackLayout – objekty
Lze VerticalStackLayout použít jako nadřazené rozložení, které obsahuje jiná vnořená podřízená rozložení.
Následující XAML ukazuje příklad vnoření HorizontalStackLayout objektů v VerticalStackLayout:
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="StackLayoutDemos.Views.VerticalStackLayoutPage">
<VerticalStackLayout Margin="20"
Spacing="6">
<Label Text="Primary colors" />
<Frame BorderColor="Black"
Padding="5">
<HorizontalStackLayout Spacing="15">
<Rectangle Fill="Red"
HeightRequest="30"
WidthRequest="30" />
<Label Text="Red"
FontSize="18" />
</HorizontalStackLayout>
</Frame>
<Frame BorderColor="Black"
Padding="5">
<HorizontalStackLayout Spacing="15">
<Rectangle Fill="Yellow"
HeightRequest="30"
WidthRequest="30" />
<Label Text="Yellow"
FontSize="18" />
</HorizontalStackLayout>
</Frame>
<Frame BorderColor="Black"
Padding="5">
<HorizontalStackLayout Spacing="15">
<Rectangle Fill="Blue"
HeightRequest="30"
WidthRequest="30" />
<Label Text="Blue"
FontSize="18" />
</HorizontalStackLayout>
</Frame>
</VerticalStackLayout>
</ContentPage>
V tomto příkladu nadřazený VerticalStackLayout objekt obsahuje vnořené HorizontalStackLayout objekty uvnitř Frame objektů:
Důležité
Čím hlouběji vnořujete objekty rozložení, tím více výpočtů rozložení se provede, což může mít vliv na výkon. Další informace najdete v tématu Volba správného rozložení.