Bryan Albrecht

Click Event für Xamarin Forms Controls

Verschiedene Elemente im Xamarin Forms besitzen einen Click Event. Ein Beispiel dafür ist der Button. Beim darauf Klicken wird eine Bestimmte Aktion ausgeführt. Diese Funktionalität ist nicht bei allen Controls standardweise implementiert.
Von diversen Webseiten kennen wir Klickbare Flächen. Zum Beispiel ein Bild, welches beim Anklicken grösser wird. Dies möchte man je nachdem auch in Xamarin Forms umsetzen können.

Umsetzung

GestureRecognizers

Da wie bereits erwähnt, ein Click Event nicht verfügbar ist, muss mit anderen Mitteln Abhilfe geschaffen werden.
Mit GestureRecognizers können verschiedene Gesten auf einem Element verfolgt werden. Eine für dieses Beispiel wichtige Geste ist die Tap-Geste. Diese Geste ist einem Klick gleichzustellen. Wenn auf diese Geste gehört wird, kann mal also ein Click Event nachbauen.

TapGestureRecognizer

In einer früheren Version von Xamarin Forms konnte man dem TapGestureRecognizer Objekt einfach eine Methode mitgeben, welche beim Klicken aufgerufen werden soll. Dies ist noch möglich, jedoch nun veraltet.

Command

Die neue Version um einem TapGestureRecognizer eine Art Eventhandler hinzuzufügen, sind Comands. Comands sind eine Art Methodenaufrufe, welche bereits im Vorfeld definiert werden können. Ein Beispiel dafür könnte wie folgt aussehen:

  1. var command = new Command(() => OnElementTaped(parameter));

Wenn dieser Command ausgeführt wird, wird die Methode OnELementTaped aufgerufen. Dieser Command kann nun einem TapGestureRecognizer hinzugefügt werden.

  1. var tapGesture = new TapGestureRecognizer() { Command = command };

Zum jetzigen Zeitpunkt wurde eine Art Event für einen Klick auf ein noch undefiniertes Element erstellt. Diesen Event muss nun noch einem Control zugeordnet werden. Dies sieht wie folgt aus:

  1. MyElement.GestureRecognizers.Add(tapGesture);

Zusammenfassung

Nach dem Hinzufügen eines GestureRecognizers und einem dazugehörigen Comand, kann jedes Beliebige Control von Xamarin Forms auf einen Click Event hören.

  1. var command = new Command(() => OnElementTaped(parameter));
  2. var tapGesture = new TapGestureRecognizer() { Command = command };
  3. MyElement.GestureRecognizers.Add(tapGesture);