Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Dies SwipeView ist ein Containersteuerelement, das ein Inhaltselement umschließt und Kontextmenüelemente bereitstellt, die durch eine Streifbewegung angezeigt werden:
SwipeView definiert die folgenden Eigenschaften:
LeftItemsvom TypSwipeItems, der die Streichelemente darstellt, die aufgerufen werden können, wenn das Steuerelement von der linken Seite gestrichen wird.RightItemsvom TypSwipeItems, der die Wischelemente darstellt, die aufgerufen werden können, wenn das Steuerelement von der rechten Seite gewischt wird.TopItems, vom TypSwipeItems, der die Wischelemente darstellt, die aufgerufen werden können, wenn das Steuerelement von oben nach unten gewischt wird.BottomItems, vom TypSwipeItems, der die Wischelemente darstellt, die aufgerufen werden können, wenn das Steuerelement von unten nach oben gewischt wird.Threshold, des Typsdouble, der die Anzahl der geräteunabhängigen Einheiten darstellt, die eine Wischgeste auslösen, um Wischelemente vollständig aufzudecken.
Diese Eigenschaften werden von BindableProperty-Objekten unterstützt, was bedeutet, dass sie Ziele von Datenbindungen sein können und formatiert werden können.
Darüber hinaus erbt die SwipeView die Eigenschaft Content von der Klasse ContentView. Die Content-Eigenschaft ist die Inhaltseigenschaft der SwipeView-Klasse und muss daher nicht explizit festgelegt werden.
Die Klasse SwipeView definiert auch drei Ereignisse:
SwipeStartedwird ausgelöst, wenn eine Streifbewegung gestartet wird. DasSwipeStartedEventArgs-Objekt, das dieses Ereignis begleitet, hat eineSwipeDirectionEigenschaft vom TypSwipeDirection.SwipeChangingwird ausgelöst, wenn die Streifbewegung erfolgt. DasSwipeChangingEventArgs-Objekt, das dieses Ereignis begleitet, hat eineSwipeDirection-Eigenschaft vom TypSwipeDirectionund eineOffset-Eigenschaft vom Typdouble.SwipeEndedwird ausgelöst, wenn eine Streifbewegung endet. DasSwipeEndedEventArgs-Objekt, das dieses Ereignis begleitet, hat eineSwipeDirection-Eigenschaft vom TypSwipeDirectionund eineIsOpen-Eigenschaft vom Typbool.
Darüber hinaus enthält SwipeView die Methoden Open und Close, mit denen die Wischelemente programmatisch geöffnet bzw. geschlossen werden.
Hinweis
SwipeView hat auf iOS und Android eine plattformspezifische Funktion, die den Übergang steuert, der beim Öffnen eines SwipeView verwendet wird. Weitere Informationen finden Sie unter SwipeView Swipe Transition Mode unter iOS und SwipeView Swipe Transition Mode unter Android.
Erstellen einer SwipeView
Ein SwipeView muss den Inhalt definieren, um den sich das SwipeView wickelt, und die Elemente, die durch die Wischgeste angezeigt werden. Die Wischelemente sind ein oder mehrere SwipeItem-Objekte, die in einer der vier SwipeView-Richtungssammlungen – LeftItems, RightItems, TopItems oder BottomItems – platziert sind.
Das folgende Beispiel zeigt, wie man ein SwipeView in XAML instanziiert:
<SwipeView>
<SwipeView.LeftItems>
<SwipeItems>
<SwipeItem Text="Favorite"
IconImageSource="favorite.png"
BackgroundColor="LightGreen"
Invoked="OnFavoriteSwipeItemInvoked" />
<SwipeItem Text="Delete"
IconImageSource="delete.png"
BackgroundColor="LightPink"
Invoked="OnDeleteSwipeItemInvoked" />
</SwipeItems>
</SwipeView.LeftItems>
<!-- Content -->
<Grid HeightRequest="60"
WidthRequest="300"
BackgroundColor="LightGray">
<Label Text="Swipe right"
HorizontalOptions="Center"
VerticalOptions="Center" />
</Grid>
</SwipeView>
Der entsprechende C#-Code lautet:
// SwipeItems
SwipeItem favoriteSwipeItem = new SwipeItem
{
Text = "Favorite",
IconImageSource = "favorite.png",
BackgroundColor = Color.LightGreen
};
favoriteSwipeItem.Invoked += OnFavoriteSwipeItemInvoked;
SwipeItem deleteSwipeItem = new SwipeItem
{
Text = "Delete",
IconImageSource = "delete.png",
BackgroundColor = Color.LightPink
};
deleteSwipeItem.Invoked += OnDeleteSwipeItemInvoked;
List<SwipeItem> swipeItems = new List<SwipeItem>() { favoriteSwipeItem, deleteSwipeItem };
// SwipeView content
Grid grid = new Grid
{
HeightRequest = 60,
WidthRequest = 300,
BackgroundColor = Color.LightGray
};
grid.Children.Add(new Label
{
Text = "Swipe right",
HorizontalOptions = LayoutOptions.Center,
VerticalOptions = LayoutOptions.Center
});
SwipeView swipeView = new SwipeView
{
LeftItems = new SwipeItems(swipeItems),
Content = grid
};
In diesem Beispiel ist der SwipeView-Inhalt ein Grid, der ein Label enthält:
Die Wischelemente werden verwendet, um Aktionen auf dem SwipeView-Inhalt auszuführen, und werden angezeigt, wenn das Steuerelement von der linken Seite gewischt wird:
Standardmäßig wird ein Wischelement ausgeführt, wenn es von der Benutzer*in angetippt wird. Dieses Verhalten kann jedoch geändert werden. Weitere Informationen finden Sie unter Wischmodus.
Nach der Ausführung eines Wischvorgangs werden die Wischvorgänge ausgeblendet und der SwipeView-Inhalt wird wieder angezeigt. Dieses Verhalten kann jedoch geändert werden. Weitere Informationen finden Sie unter Wischverhalten.
Hinweis
Wischinhalte und Wischelemente können inline platziert oder als Ressourcen definiert werden.
Wischen von Elementen
Die Sammlungen LeftItems, RightItems, TopItems und BottomItems sind alle vom Typ SwipeItems. Die SwipeItems-Klasse definiert die folgenden Eigenschaften:
Mode, des TypsSwipeMode, der die Auswirkung einer Wischinteraktion anzeigt. Weitere Informationen zum Wischmodus finden Sie unter Wischmodus.SwipeBehaviorOnInvoked, vom TypSwipeBehaviorOnInvoked, der angibt, wie sich einSwipeViewverhält, nachdem ein Wischelement aufgerufen wurde. Weitere Informationen zum Wischverhalten finden Sie unter Wischverhalten.
Diese Eigenschaften werden von BindableProperty-Objekten unterstützt, was bedeutet, dass sie Ziele von Datenbindungen sein können und formatiert werden können.
Jedes Wischelement ist als SwipeItem-Objekt definiert, das in eine der vier SwipeItems-Richtungssammlungen eingeordnet wird. Die Klasse SwipeItem leitet von der Klasse MenuItem ab und fügt die folgenden Mitglieder hinzu:
- Eine
BackgroundColor-Eigenschaft vom TypColor, die die Hintergrundfarbe des Swipe-Elements definiert. Diese Eigenschaft wird durch eine bindungsfähige Eigenschaft unterstützt. - Ein
InvokedEreignis, das ausgelöst wird, wenn das Wischelement ausgeführt wird.
Wichtig
Die Klasse MenuItem definiert mehrere Eigenschaften, darunter Command, CommandParameter, IconImageSource und Text. Diese Eigenschaften können für ein SwipeItem-Objekt festgelegt werden, um sein Aussehen zu definieren und um ein ICommand zu definieren, das ausgeführt wird, wenn das Streichelement aufgerufen wird. Weitere Informationen finden Sie unter Xamarin.Forms MenuItem.
Das folgende Beispiel zeigt zwei SwipeItem-Objekte in der LeftItems-Sammlung eines SwipeView:
<SwipeView>
<SwipeView.LeftItems>
<SwipeItems>
<SwipeItem Text="Favorite"
IconImageSource="favorite.png"
BackgroundColor="LightGreen"
Invoked="OnFavoriteSwipeItemInvoked" />
<SwipeItem Text="Delete"
IconImageSource="delete.png"
BackgroundColor="LightPink"
Invoked="OnDeleteSwipeItemInvoked" />
</SwipeItems>
</SwipeView.LeftItems>
<!-- Content -->
</SwipeView>
Das Aussehen der einzelnen SwipeItem wird durch eine Kombination der Eigenschaften Text, IconImageSource und BackgroundColor bestimmt:
Wenn ein SwipeItem angetippt wird, wird sein Invoked-Ereignis ausgelöst und von seinem registrierten Ereignishandler behandelt. Außerdem wird das Ereignis MenuItem.Clicked ausgelöst. Alternativ kann die Command-Eigenschaft auf eine ICommand-Implementierung gesetzt werden, die ausgeführt wird, wenn die SwipeItem aufgerufen wird.
Hinweis
Wenn das Aussehen eines SwipeItem nur mit den Eigenschaften Text oder IconImageSource definiert wird, wird der Inhalt immer zentriert.
Neben der Definition von Wischelementen als SwipeItem-Objekte ist es auch möglich, benutzerdefinierte Wischelementansichten zu definieren. Weitere Informationen finden Sie unter Benutzerdefinierte Wischelemente.
Wischrichtungen
SwipeView unterstützt vier verschiedene Wischrichtungen, wobei die Wischrichtung durch die richtungsbezogene SwipeItems-Sammlung definiert wird, der die SwipeItem-Objekte hinzugefügt werden. Jede Wischrichtung kann ihre eigenen Wischelemente enthalten. Das folgende Beispiel zeigt ein SwipeView, dessen Wischelemente von der Wischrichtung abhängen:
<SwipeView>
<SwipeView.LeftItems>
<SwipeItems>
<SwipeItem Text="Delete"
IconImageSource="delete.png"
BackgroundColor="LightPink"
Command="{Binding DeleteCommand}" />
</SwipeItems>
</SwipeView.LeftItems>
<SwipeView.RightItems>
<SwipeItems>
<SwipeItem Text="Favorite"
IconImageSource="favorite.png"
BackgroundColor="LightGreen"
Command="{Binding FavoriteCommand}" />
<SwipeItem Text="Share"
IconImageSource="share.png"
BackgroundColor="LightYellow"
Command="{Binding ShareCommand}" />
</SwipeItems>
</SwipeView.RightItems>
<!-- Content -->
</SwipeView>
In diesem Beispiel kann der SwipeView-Inhalt nach rechts oder links gestrichen werden. Wenn Sie nach rechts wischen, wird das Wischelement Löschen angezeigt und wenn Sie nach links wischen, werden die Wischelemente Favorit und Teilen angezeigt.
Warnung
Auf einem SwipeView kann jeweils nur eine Instanz einer gerichteten SwipeItems-Sammlung eingestellt werden. Daher können nicht zwei LeftItems-Definitionen für eine SwipeView vorliegen.
Die Ereignisse SwipeStarted, SwipeChanging und SwipeEnded melden die Wischrichtung über die Eigenschaft SwipeDirection in den Ereignisargumenten. Diese Eigenschaft ist vom Typ SwipeDirection, einer Aufzählung, die aus vier Mitgliedern besteht:
Rightzeigt an, dass eine Wischbewegung nach rechts stattgefunden hat.Leftzeigt an, dass eine Wischbewegung nach links stattgefunden hat.Upzeigt an, dass eine Wischbewegung nach oben stattgefunden hat.Downzeigt an, dass eine Wischbewegung nach unten stattgefunden hat.
Schwellenwert für Wischen
SwipeView enthält eine Threshold-Eigenschaft vom Typ double, die die Anzahl der geräteunabhängigen Einheiten darstellt, die eine Wischgeste auslösen, um Wischelemente vollständig aufzudecken.
Das folgende Beispiel zeigt einen SwipeView, der die Eigenschaft Threshold festlegt:
<SwipeView Threshold="200">
<SwipeView.LeftItems>
<SwipeItems>
<SwipeItem Text="Favorite"
IconImageSource="favorite.png"
BackgroundColor="LightGreen" />
</SwipeItems>
</SwipeView.LeftItems>
<!-- Content -->
</SwipeView>
In diesem Beispiel muss das SwipeView für 200 geräteunabhängige Einheiten gewischt werden, bevor das SwipeItem vollständig angezeigt wird.
Hinweis
Derzeit wird die Threshold Eigenschaft nur unter iOS und Android implementiert.
Wischmodus
Die Klasse SwipeItems verfügt über eine Mode-Eigenschaft, die die Wirkung einer Wischinteraktion angibt. Diese Eigenschaft sollte auf eines der SwipeMode-Enumerationsmembers gesetzt werden:
Revealzeigt an, dass eine Wischbewegung die Wischelemente aufdeckt. Dies ist der Standardwert der EigenschaftSwipeItems.Mode.Executezeigt an, dass eine Wischbewegung die Wischelemente ausführt.
Im Aufdeckungsmodus wischt der/die Benutzer*in über ein SwipeView, um ein Menü zu öffnen, das aus einem oder mehreren Streichelementen besteht, und muss explizit auf ein Streichelement tippen, um es auszuführen. Nach der Ausführung des Wischelements werden die Wischelemente geschlossen und der SwipeView-Inhalt wird wieder angezeigt. Im Ausführungsmodus wischt der/die Benutzer*in über ein SwipeView, um ein Menü zu öffnen, das aus weiteren Wischoptionen besteht, die dann automatisch ausgeführt werden. Nach der Ausführung werden die Wischelemente geschlossen und der SwipeView-Inhalt wird wieder angezeigt.
Das folgende Beispiel zeigt einen SwipeView, der für den Ausführungsmodus konfiguriert ist:
<SwipeView>
<SwipeView.LeftItems>
<SwipeItems Mode="Execute">
<SwipeItem Text="Delete"
IconImageSource="delete.png"
BackgroundColor="LightPink"
Command="{Binding DeleteCommand}" />
</SwipeItems>
</SwipeView.LeftItems>
<!-- Content -->
</SwipeView>
In diesem Beispiel kann der SwipeView-Inhalt nach rechts gewischt werden, um das Wischelement anzuzeigen, das sofort ausgeführt wird. Nach der Ausführung wird der Inhalt von SwipeView erneut angezeigt.
Wischverhalten
Die SwipeItems-Klasse hat eine SwipeBehaviorOnInvoked-Eigenschaft, die angibt, wie sich ein SwipeView nach dem Aufrufen eines Wischelements verhält. Diese Eigenschaft sollte auf eines der SwipeBehaviorOnInvoked-Enumerationsmembers gesetzt werden:
Autozeigt an, dassSwipeViewim Einblendungsmodus geschlossen wird, nachdem ein Wischelement aufgerufen wurde, und im Ausführungsmodus bleibtSwipeViewoffen, nachdem ein Wischelement aufgerufen wurde. Dies ist der Standardwert der EigenschaftSwipeItems.SwipeBehaviorOnInvoked.Closezeigt an, dass dieSwipeViewnach dem Aufrufen eines Wischelements geschlossen wird.RemainOpenzeigt an, dass dasSwipeViewnach dem Aufrufen eines Wischelements geöffnet bleibt.
Das folgende Beispiel zeigt ein SwipeView, das so konfiguriert ist, dass es offen bleibt, nachdem ein Wischelement aufgerufen wurde:
<SwipeView>
<SwipeView.LeftItems>
<SwipeItems SwipeBehaviorOnInvoked="RemainOpen">
<SwipeItem Text="Favorite"
IconImageSource="favorite.png"
BackgroundColor="LightGreen"
Invoked="OnFavoriteSwipeItemInvoked" />
<SwipeItem Text="Delete"
IconImageSource="delete.png"
BackgroundColor="LightPink"
Invoked="OnDeleteSwipeItemInvoked" />
</SwipeItems>
</SwipeView.LeftItems>
<!-- Content -->
</SwipeView>
Benutzerdefinierte Wischelemente
Benutzerdefinierte Wischelemente können mit dem Typ SwipeItemView definiert werden. Die Klasse SwipeItemView leitet sich von der Klasse ContentView ab und fügt die folgenden Eigenschaften hinzu:
Command, vom TypICommand, die ausgeführt wird, wenn ein Wischelement angetippt wird.CommandParameter, vom Typobject: Parameter, der an denCommandübergeben wird.
Diese Eigenschaften werden von BindableProperty-Objekten unterstützt, was bedeutet, dass sie Ziele von Datenbindungen sein können und formatiert werden können.
Die SwipeItemView Klasse definiert auch ein Invoked Ereignis, das ausgelöst wird, wenn das Element angetippt wird, nachdem das Command Element ausgeführt wurde.
Das folgende Beispiel zeigt ein SwipeItemView-Objekt in der LeftItems-Sammlung eines SwipeView:
<SwipeView>
<SwipeView.LeftItems>
<SwipeItems>
<SwipeItemView Command="{Binding CheckAnswerCommand}"
CommandParameter="{Binding Source={x:Reference resultEntry}, Path=Text}">
<StackLayout Margin="10"
WidthRequest="300">
<Entry x:Name="resultEntry"
Placeholder="Enter answer"
HorizontalOptions="CenterAndExpand" />
<Label Text="Check"
FontAttributes="Bold"
HorizontalOptions="Center" />
</StackLayout>
</SwipeItemView>
</SwipeItems>
</SwipeView.LeftItems>
<!-- Content -->
</SwipeView>
In diesem Beispiel umfasst das SwipeItemView ein StackLayout, das ein Entry und ein Label enthält. Nachdem der/die Benutzer*in Eingaben in das Entry eingegeben hat, kann der Rest des SwipeViewItem angetippt werden, wodurch das ICommand ausgeführt wird, das durch die Eigenschaft SwipeItemView.Command definiert ist.
Programmgesteuertes Öffnen und Schließen von SwipeView
SwipeView enthält die Methoden Open und Close, mit denen die Wischelemente programmatisch geöffnet bzw. geschlossen werden. Standardmäßig animieren diese Methoden das SwipeView, wenn es geöffnet oder geschlossen wird.
Die Open-Methode erfordert ein OpenSwipeItem-Argument, um die Richtung anzugeben, aus der SwipeView geöffnet werden soll. Die Enumeration OpenSwipeItem hat vier Mitglieder:
LeftItems, was bedeutet, dassSwipeViewvon links geöffnet wird, um die Wischelemente in derLeftItems-Sammlung zu zeigen.TopItems, was bedeutet, dass dieSwipeViewvon oben geöffnet wird, um die Wischelemente in derTopItems-Sammlung einzublenden.RightItems, was bedeutet, dassSwipeViewvon rechts geöffnet wird, um die Wischelemente in derRightItems-Sammlung anzuzeigen.BottomItems, was bedeutet, dassSwipeViewvon unten geöffnet wird, um die Wischelemente in derBottomItems-Sammlung zu zeigen.
Darüber hinaus akzeptiert die Open-Methode auch ein optionales bool-Argument, das festlegt, ob das SwipeView beim Öffnen animiert wird.
Anhand eines SwipeView mit dem Namen swipeView zeigt das folgende Beispiel, wie ein SwipeView geöffnet wird, um die Wischelemente in der Sammlung LeftItems anzuzeigen:
swipeView.Open(OpenSwipeItem.LeftItems);
swipeView kann dann mit der Methode Close geschlossen werden:
swipeView.Close();
Hinweis
Die Close-Methode akzeptiert auch ein optionales bool-Argument, das festlegt, ob das SwipeView beim Schließen animiert wird.
Deaktivieren einer SwipeView
Eine Anwendung kann einen Zustand eingeben, in dem das Wischen eines Inhaltselements kein gültiger Vorgang ist. In solchen Fällen kann die SwipeView deaktiviert werden, indem die zugehörige IsEnabled-Eigenschaft auf false festgelegt wird. Dadurch wird verhindert, dass die Benutzenden Inhalte durch Wischen anzeigen können, um Wischelemente anzuzeigen.
Außerdem kann bei der Definition der Command-Eigenschaft eines SwipeItem oder SwipeItemView der CanExecute-Delegat des ICommand angegeben werden, um das Wischelement zu aktivieren oder zu deaktivieren.


