Xamarin Community Toolkit StateLayout
Das Anzeigen einer bestimmten Ansicht, wenn Sich Ihre App in einem bestimmten Zustand befindet, ist ein gängiges Muster für jede mobile App. Beispiele reichen von der Erstellung von Ladeansichten zum Überlagern auf dem Bildschirm oder auf einem Unterabschnitt des Bildschirms. Leere Zustandsansichten können erstellt werden, wenn keine Daten angezeigt werden sollen, und Fehlerzustandsansichten können angezeigt werden, wenn ein Fehler auftritt.
Erste Schritte
Mit dem StateLayout-Steuerelement kann der Benutzer ein beliebiges Layoutelement wie ein Grid
oder StackLayout
ein einzelnes zustandsfähiges Element umwandeln. Jedes Layout, das Sie zustandsfähig machen, mit den angefügten StateLayout-Eigenschaften, enthält eine Auflistung von StateView
Objekten. Diese Objekte können als Vorlagen für die verschiedenen Zustände verwendet werden, die von StateLayout unterstützt werden. Wenn die CurrentState
Eigenschaft auf einen Wert festgelegt wird, der der State
Eigenschaft eines der StateViews entspricht, wird anstelle des Hauptinhalts angezeigt.
LayoutState-Aufzählung
Die LayoutState
Enumeration unterstützt einen der folgenden Werte:
None
(Standardeinstellung: Dadurch wird die anfängliche Ansicht angezeigt)Loading
Saving
Success
Error
Empty
Custom
Syntax
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:xct="http://xamarin.com/schemas/2020/toolkit"
x:Class="MyLittleApp.MainPage">
<Grid xct:StateLayout.CurrentState="{Binding CurrentState}">
<xct:StateLayout.StateViews>
<xct:StateView StateKey="Loading">
<Grid BackgroundColor="White">
<StackLayout VerticalOptions="Center" HorizontalOptions="Center">
<ActivityIndicator Color="#1abc9c" />
<Label Text="Loading..." HorizontalOptions="Center" />
</StackLayout>
</Grid>
</xct:StateView>
</xct:StateLayout.StateViews>
...
</Grid>
</ContentPage>
Verwenden von benutzerdefinierten Zuständen
Neben den integrierten Zuständen unterstützt StateLayout auch einen Custom
Zustand. Durch Festlegen State
Custom
und Hinzufügen eines CustomStateKey
Steuerelements können Sie benutzerdefinierte Zustände über die integrierten Zustände hinaus erstellen. Sie können das CurrentCustomStateKey
"StateLayout"-Stammelement verwenden, um eine Variable zu binden, die angibt, wann eine ihrer benutzerdefinierten Zustände angezeigt werden soll.
Syntax
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:xct="clr-namespace:Xamarin.CommunityToolkit.Views;assembly=Xamarin.CommunityToolkit"
x:Class="MyLittleApp.MainPage">
<StackLayout Padding="10" xct:StateLayout.CurrentState="{Binding CurrentState}" xct:StateLayout.CurrentCustomStateKey="{Binding CustomState}">
<xct:StateLayout.StateViews>
<xct:StateView StateKey="Custom" CustomStateKey="ThisIsACustomState">
<Label Text="Hi, I'm a custom state!" />
</xct:StateView>
<xct:StateView StateKey="Custom" CustomStateKey="ThisIsACustomStateToo">
<Label Text="Hi, I'm a custom state too!" />
</xct:StateView>
</xct:StateLayout.StateViews>
<Label Text="This is the normal state." />
</StackLayout>
</ContentPage>
Verwenden von wiederholten Zuständen
Beim Laden mehrerer Elemente desselben Typs könnte es nützlich sein, ein Stück XAML zu wiederholen, ohne es mehrmals einfügen zu müssen. Hier sollte die RepeatCount
Eigenschaft verwendet werden. Durch Definieren einer Datei Template
ist es möglich, denselben XAML-Teil zu wiederholen, während er nur einmal definiert wird.
Hinweis
Wenn Sie ein RepeatCount
Objekt verwenden, das größer als 1 ist, müssen Sie die Template
Eigenschaft verwenden, um Ihre Inhalte bereitzustellen. Die Bereitstellung Content
für eine StateView
Weile, die größer RepeatCount
als 1 ist, führt zu einer Ausnahme.
Syntax
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:xct="clr-namespace:Xamarin.CommunityToolkit.Views;assembly=Xamarin.CommunityToolkit"
x:Class="MyLittleApp.MainPage">
<StackLayout xct:StateLayout.CurrentState="{Binding CurrentState}">
<xct:StateLayout.StateViews>
<xct:StateView StateKey="Loading" RepeatCount="3">
<xct:StateView.Template>
<DataTemplate>
<StackLayout Spacing="8">
<BoxView CornerRadius="8" HeightRequest="40" BackgroundColor="#CCCCCC" WidthRequest="120" />
<BoxView CornerRadius="8" HeightRequest="40" BackgroundColor="#CCCCCC" WidthRequest="200" />
</StackLayout>
</DataTemplate>
</xct:StateView.Template>
</xct:StateView>
</xct:StateLayout.StateViews>
...
<StackLayout>
</ContentPage>
Eigenschaften
Die folgenden Eigenschaften sind für das StateLayout
Objekt verfügbar:
Eigenschaft | type | BESCHREIBUNG |
---|---|---|
Currentstate | LayoutState |
Definiert den aktuellen Status des Layouts und die anzuzeigende Vorlage. |
CurrentCustomStateKey | Zeichenfolge | Koppeln Sie dies mit State="Custom" einer StateView, um benutzerdefinierte Zustände hinzuzufügen. |
StateViews | IList<StateView> |
Eine Liste der StateView-Objekte, die eine Vorlage pro Zustand enthalten. |
Die folgenden Eigenschaften sind für das StateView
Objekt verfügbar:
Eigenschaft | type | BESCHREIBUNG |
---|---|---|
CustomStateKey | Zeichenfolge | Definiert den aktuellen Status des Layouts und die anzuzeigende Vorlage. |
RepeatCount | INT | Die Anzahl der Wiederholungen der Vorlage. |
Vorlage | DataTemplate |
Definiert eine Vorlage, die für diesen Zustand angezeigt werden soll. |
State | LayoutState |
Definiert den aktuellen Status des Layouts und die anzuzeigende Vorlage. |
Beispiel
StateLayout-Beispielseite Quelle
Sie können dies in Aktion in der Xamarin Community Toolkit-Beispiel-App sehen.