Freigeben über


Vertikale Stapelgestaltung

Die .NET Multi-platform App UI (.NET MAUI) VerticalStackLayout organisiert die untergeordneten Ansichten in einem eindimensionalen vertikalen Stapel und ist eine performantere Alternative zu einer StackLayout. Darüber hinaus kann ein VerticalStackLayout als übergeordnetes Layout verwendet werden, das andere untergeordnete Layouts enthält.

Die VerticalStackLayout definiert die folgenden Eigenschaften:

  • Spacing, vom Typ double, gibt den Abstand zwischen jeder untergeordneten Ansicht an. Der Standardwert dieser Eigenschaft ist 0.

Diese Eigenschaft wird durch ein BindableProperty Objekt unterstützt, was bedeutet, dass sie Ziel von Datenbindungen sein und gestylt werden kann.

Der folgende XAML-Code zeigt, wie Sie eine Datei VerticalStackLayout erstellen, die unterschiedliche untergeordnete Ansichten enthält:

<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>

In diesem Beispiel wird ein VerticalStackLayout erstellt, das Label und Rectangle Objekte enthält. Standardmäßig gibt es keinen Abstand zwischen den untergeordneten Ansichten:

VerticalStackLayout-Screenshot, der verschiedene untergeordnete Ansichten anzeigt.

Hinweis

Der Wert der Margin Eigenschaft stellt den Abstand zwischen einem Element und seinen angrenzenden Elementen dar. Weitere Informationen finden Sie unter Positionssteuerung.

Abstand zwischen untergeordneten Ansichten

Der Abstand zwischen untergeordneten Ansichten in einer VerticalStackLayout kann geändert werden, indem man die Spacing-Eigenschaft auf einen double-Wert festlegt.

<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>

In diesem Beispiel wird ein VerticalStackLayout erstellt, das Label und Rectangle Objekte enthält. Zwischen den untergeordneten Ansichten gibt es zehn geräteunabhängige Einheiten Platz.

VerticalStackLayout zeigt unterschiedliche Kindansichten mit Abstand auf einem Screenshot.

Tipp

Die Spacing Eigenschaft kann auf negative Werte festgelegt werden, um untergeordnete Ansichten überlappen zu lassen.

Position und Größe untergeordneter Ansichten

Die Größe und Position der Kindansichten innerhalb eines VerticalStackLayout hängen von den Werten der HeightRequest- und WidthRequest-Eigenschaften der Kindansichten sowie den Werten ihrer HorizontalOptions-Eigenschaften ab. In einem VerticalStackLayout dehnen sich untergeordnete Ansichten aus, um die verfügbare Breite zu füllen, wenn ihre Größe nicht ausdrücklich festgelegt ist.

Die HorizontalOptions Eigenschaften eines VerticalStackLayout und seiner untergeordneten Ansichten können auf Felder aus der LayoutOptions Struktur festgelegt werden, die eine Präferenz für das Ausrichtungs-Layout kapselt. Diese Layouteinstellung bestimmt die Position und Größe einer untergeordneten Ansicht innerhalb des übergeordneten Layouts.

Tipp

Legen Sie die Eigenschaft von HorizontalOptions einer VerticalStackLayout nur dann fest, wenn es unbedingt erforderlich ist. Der Standardwert von LayoutOptions.Fill ermöglicht es, die beste Layoutoptimierung zu erzielen. Das Ändern dieser Eigenschaft hat kosten und verbraucht Arbeitsspeicher, auch wenn sie wieder auf den Standardwert festgelegt wird.

Im folgenden XAML-Beispiel werden Ausrichtungspräferenzen für jede untergeordnete Ansicht in der VerticalStackLayout festgelegt.

<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>

In diesem Beispiel werden die Ausrichtungseinstellungen der Label Objekte festgelegt, um ihre Position innerhalb der VerticalStackLayout zu steuern. Die StartFelder , Center, Endund Fill Felder werden verwendet, um die Ausrichtung der Label Objekte innerhalb des übergeordneten Elements VerticalStackLayoutzu definieren:

VerticalStackLayout mit ausgerichteten untergeordneten Ansichten screenshot.

Die VerticalStackLayout berücksichtigt nur die Ausrichtungseinstellungen von untergeordneten Ansichten, die sich in entgegengesetzter Richtung zur Ausrichtung des Layouts befinden. Daher legen die untergeordneten Ansichten innerhalb der VerticalStackLayout ihre HorizontalOptions Eigenschaften auf eines der Ausrichtungsfelder fest:

Nest VerticalStackLayout-Objekte

A VerticalStackLayout kann als übergeordnetes Layout verwendet werden, das andere geschachtelte untergeordnete Layouts enthält.

Der folgende XAML-Code zeigt ein Beispiel für das Verschachteln von HorizontalStackLayout Objekten in einer 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" />
       <Border Stroke="Black"
               Padding="5">
           <HorizontalStackLayout Spacing="15">
               <Rectangle Fill="Red"
                          HeightRequest="30"
                          WidthRequest="30" />
               <Label Text="Red"
                      FontSize="18" />
           </HorizontalStackLayout>
       </Border>
       <Border Stroke="Black"
               Padding="5">
           <HorizontalStackLayout Spacing="15">
               <Rectangle Fill="Yellow"
                          HeightRequest="30"
                          WidthRequest="30" />
               <Label Text="Yellow"
                      FontSize="18" />
           </HorizontalStackLayout>
       </Border>
       <Border Stroke="Black"
               Padding="5">
           <HorizontalStackLayout Spacing="15">
               <Rectangle Fill="Blue"
                          HeightRequest="30"
                          WidthRequest="30" />
               <Label Text="Blue"
                      FontSize="18" />
           </HorizontalStackLayout>
       </Border>
    </VerticalStackLayout>
</ContentPage>

In diesem Beispiel enthält das übergeordnete VerticalStackLayout Objekt geschachtelte HorizontalStackLayout Objekte in Border Objekten:

Screenshot der VerticalStackLayout mit geschachtelten HorizontalStackLayout-Objekten.

Von Bedeutung

Je tiefer Sie Layoutobjekte verschachteln, desto mehr Layoutberechnungen werden ausgeführt, was sich auf die Leistung auswirken kann. Weitere Informationen finden Sie unter Auswählen des richtigen Layouts.