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.
Das Erkennungsmodul für Wischbewegungen von .NET Multi-Platform App UI (.NET MAUI) erkennt, wenn ein Finger in horizontaler oder vertikaler Richtung über den Bildschirm bewegt wird. Es wird oft verwendet, um die Navigation durch den Inhalt zu starten.
In .NET MAUI sorgt die SwipeGestureRecognizer-Klasse für die Erkennung der Ziehbewegung. Diese Klasse definiert die folgenden Eigenschaften:
- Command vom Typ ICommand, der ausgeführt wird, sobald eine Wischbewegung erkannt wird.
- CommandParameter, vom Typ
object
: Parameter, der an denCommand
übergeben wird. - Direction vom Typ SwipeDirection, der die Richtung definiert
- Threshold vom Typ
uint
, der den Mindestwischabstand in geräteunabhängigen Einheiten darstellt, der erreicht werden muss, damit eine Wischbewegung erkannt wird.. Der Standardwert dieser Eigenschaft ist 100, was bedeutet, dass alle Wischbewegungen, die weniger als 100 geräteunabhängige Einheiten betragen, ignoriert werden.
Diese Eigenschaften werden durch BindableProperty-Objekte gestützt, was bedeutet, dass sie Ziele von Datenbindungen sein können, und geformt.
SwipeGestureRecognizer definiert auch ein Swiped-Ereignis, das ausgelöst wird, wenn ein Wischen erkannt wird. Das SwipedEventArgs-Objekt, das das Swiped-Ereignis begleitet, definiert folgende Eigenschaften:
- Direction vom Typ SwipeDirection, gibt die Richtung der Wischbewegung an.
- Parameter vom Typ
object
, gibt den Wert an, der von derCommandParameter
-Eigenschaft übergeben wird, falls definiert.
Erstellen eines SwipeGestureRecognizers
Damit eine View eine Wischbewegung erkennt, erstellen Sie ein SwipeGestureRecognizer-Objekt, setzen Sie die Direction-Eigenschaft auf einen SwipeDirection-Enumerationswert (Left
, Right
, Up
oder Down
), setzen Sie optional die Threshold-Eigenschaft, behandeln Sie das Swiped-Ereignis und fügen Sie den neuen Gestenerkennungsmodul zur GestureRecognizers
-Auflistung der Ansicht hinzu. Das folgende Codebeispiel zeigt ein SwipeGestureRecognizer-Modul, das an eine BoxView-Klasse angefügt ist:
<BoxView Color="Teal" ...>
<BoxView.GestureRecognizers>
<SwipeGestureRecognizer Direction="Left" Swiped="OnSwiped"/>
</BoxView.GestureRecognizers>
</BoxView>
Der entsprechende C#-Code lautet:
BoxView boxView = new BoxView { Color = Colors.Teal, ... };
SwipeGestureRecognizer leftSwipeGesture = new SwipeGestureRecognizer { Direction = SwipeDirection.Left };
leftSwipeGesture.Swiped += OnSwiped;
boxView.GestureRecognizers.Add(leftSwipeGesture);
Erkennen der Wischrichtung
Die SwipeGestureRecognizer.Direction
-Eigenschaft kann auf einen einzelnen Wert aus der SwipeDirection-Enumeration oder auf mehrere Werte festgelegt werden. Dadurch kann das Swiped-Ereignis als Reaktion auf eine Wischbewegung in mehr als eine Richtung ausgelöst werden. Dies wird jedoch dadurch eingeschränkt, dass eine einzelne SwipeGestureRecognizer-Klasse nur Wischbewegungen erkennen kann, die auf derselben Achse vorkommen. Deshalb können Wischbewegungen auf der horizontalen Achse erkannt werden, indem die Direction-Eigenschaft auf Left
und Right
festgelegt wird:
<SwipeGestureRecognizer Direction="Left,Right" Swiped="OnSwiped"/>
Auf ähnliche Weise können Wischbewegungen auf der vertikalen Achse erkannt werden, indem die Direction-Eigenschaft auf Up
und Down
festgelegt wird:
SwipeGestureRecognizer swipeGesture = new SwipeGestureRecognizer { Direction = SwipeDirection.Up | SwipeDirection.Down };
Alternativ kann eine SwipeGestureRecognizer-Klasse für jede Wischrichtung erstellt werden, damit Wischbewegungen in alle Richtungen erkannt werden können:
<BoxView Color="Teal" ...>
<BoxView.GestureRecognizers>
<SwipeGestureRecognizer Direction="Left" Swiped="OnSwiped"/>
<SwipeGestureRecognizer Direction="Right" Swiped="OnSwiped"/>
<SwipeGestureRecognizer Direction="Up" Swiped="OnSwiped"/>
<SwipeGestureRecognizer Direction="Down" Swiped="OnSwiped"/>
</BoxView.GestureRecognizers>
</BoxView>
Der entsprechende C#-Code lautet:
BoxView boxView = new BoxView { Color = Colors.Teal, ... };
SwipeGestureRecognizer leftSwipeGesture = new SwipeGestureRecognizer { Direction = SwipeDirection.Left };
leftSwipeGesture.Swiped += OnSwiped;
SwipeGestureRecognizer rightSwipeGesture = new SwipeGestureRecognizer { Direction = SwipeDirection.Right };
rightSwipeGesture.Swiped += OnSwiped;
SwipeGestureRecognizer upSwipeGesture = new SwipeGestureRecognizer { Direction = SwipeDirection.Up };
upSwipeGesture.Swiped += OnSwiped;
SwipeGestureRecognizer downSwipeGesture = new SwipeGestureRecognizer { Direction = SwipeDirection.Down };
downSwipeGesture.Swiped += OnSwiped;
boxView.GestureRecognizers.Add(leftSwipeGesture);
boxView.GestureRecognizers.Add(rightSwipeGesture);
boxView.GestureRecognizers.Add(upSwipeGesture);
boxView.GestureRecognizers.Add(downSwipeGesture);
Antworten auf eine Wischbewegung
Eine erkannte Wischbewegung kann von einem Handler für das Swiped-Ereignis beantwortet werden:
void OnSwiped(object sender, SwipedEventArgs e)
{
switch (e.Direction)
{
case SwipeDirection.Left:
// Handle the swipe
break;
case SwipeDirection.Right:
// Handle the swipe
break;
case SwipeDirection.Up:
// Handle the swipe
break;
case SwipeDirection.Down:
// Handle the swipe
break;
}
}
Die SwipedEventArgs-Klasse kann untersucht werden, um die Richtung der Wischbewegung zu bestimmen, wobei benutzerdefinierte Logik nach Bedarf auf die Wischbewegung reagiert. Die Richtung der Wischbewegung kann aus der Direction-Eigenschaft der Ereignisargumente abgerufen werden, die auf einen der Werte aus der SwipeDirection-Enumeration festgelegt wird. Darüber hinaus verfügen die Ereignisargumente auch über eine Parameter-Eigenschaft, die auf den Wert der CommandParameter
-Eigenschaft festgelegt wird, sofern definiert.
Erstellen eines Wischcontainers
Die Klasse SwipeContainer
, die im folgenden Beispiel gezeigt wird, ist eine verallgemeinerte Wischerkennungsklasse, die eine View umschließt, um einer Wischgestenerkennung durchzuführen:
public class SwipeContainer : ContentView
{
public event EventHandler<SwipedEventArgs> Swipe;
public SwipeContainer()
{
GestureRecognizers.Add(GetSwipeGestureRecognizer(SwipeDirection.Left));
GestureRecognizers.Add(GetSwipeGestureRecognizer(SwipeDirection.Right));
GestureRecognizers.Add(GetSwipeGestureRecognizer(SwipeDirection.Up));
GestureRecognizers.Add(GetSwipeGestureRecognizer(SwipeDirection.Down));
}
SwipeGestureRecognizer GetSwipeGestureRecognizer(SwipeDirection direction)
{
SwipeGestureRecognizer swipe = new SwipeGestureRecognizer { Direction = direction };
swipe.Swiped += (sender, e) => Swipe?.Invoke(this, e);
return swipe;
}
}
Die SwipeContainer
-Klasse erstellt SwipeGestureRecognizer-Objekte für alle vier Wischrichtungen und fügt Swipe
-Ereignishandler an. Diese Ereignishandler rufen das Swipe
-Ereignis auf, das durch den SwipeContainer
definiert wird.
Das folgende XAML-Codebeispiel zeigt die Klasse SwipeContainer
, die ein BoxView-Element umschließt:
<StackLayout>
<local:SwipeContainer Swipe="OnSwiped" ...>
<BoxView Color="Teal" ... />
</local:SwipeContainer>
</StackLayout>
In diesem Beispiel wird, wenn BoxView eine Wischbewegung empfängt, das Ereignis Swiped in SwipeGestureRecognizer ausgelöst. Dies erfolgt durch die SwipeContainer
-Klasse, die ihr eigenes Swipe
-Ereignis auslöst. Dieses Swipe
-Ereignis wird auf der Seite behandelt. Die SwipedEventArgs-Klasse kann dann untersucht werden, um die Richtung der Wischbewegung zu bestimmen, wobei benutzerdefinierte Logik nach Bedarf auf die Wischbewegung reagiert.
Der entsprechende C#-Code lautet:
BoxView boxView = new BoxView { Color = Colors.Teal, ... };
SwipeContainer swipeContainer = new SwipeContainer { Content = boxView, ... };
swipeContainer.Swipe += (sender, e) =>
{
// Handle the swipe
};
StackLayout stackLayout = new StackLayout();
stackLayout.Add(swipeContainer);