Bryan Albrecht

Xamarin MessagingCenter

In einem Xamarin Forms Projekt kann es ab und zu vorkommen, dass eine Aktion auf der einen View eine Aktion auf einer anderen View benötigt. Da sich die Views nicht immer gegenseitig kennen, benötigt es einen Kanal, über welchen die beiden Views kommunizieren können. Für solche Anwendungsfälle existiert in Xamarin Forms das Messaging Center.

Funktion

Ein MessagingCenter funktioniert vom Prinzip her sehr ähnlich wie Events.
Damit eine Kommunikation stattfinden kann, braucht es immer mindestens Zwei Kommunikationspartner. Einer davon ist der Subscriber und der andere ist der Publisher. Die Kommunikation zwischen den beiden Partnern ist sehr einseitig. Dies ist so, da der Publisher ausschliesslich Dinge mitteilt und der Subscriber ausschliesslich auf diese Mitteilungen hört.

Subscribe

Wie bereits erwähnt, hört ein Subscriber ausschliesslich zu. Genauer gesagt, wartet er, bis jemand seinen Namen mit den richtigen Parametern aufruft. Im Code kann dies so aussehen:

  1. MessagingCenter.Subscribe<string> (this, "Hi", (sender) => {
  2. // do something whenever the "Hi" message is sent
  3. });

Wie bereits im Codebeispiel ersichtlich, wartet dieser Subscriber, bis jemand eine Nachricht mit dem Namen „Hi“ und einem String als Parameter sendet.
Wenn dies der Fall ist, beginnt der Subscriber mit seiner Arbeit und führt den definierten Code aus.

Publish

Ein Publisher ist einfach gesagt derjenige, der eine Nachricht mit einem bestimmten Namen in den Raum wirft. Dem Publisher ist es egal, ob der von ihm gerufenen Namen existiert oder nicht.
Das aufrufen sieht wie folgt aus:

  1. MessagingCenter.Send<string> ("Text", "Hi");

Unsubscribe

Da eine Bestimmte Aktion auf einer View nur manchmal ausgeführt werden soll, muss man nicht nur subscriben sondern auch unsubscriben können. Dies Funktioniert wie folgt:

  1. MessagingCenter.Unsubscribe<String> (this, "Hi");

Mehrere Subscriber und Publisher

Da es ausschliesslich ein Minimum und kein Maximum an Subscribern und Publishern gibt, können von beiden mehrere verwendet werden. Das heisst, dass auf einen bestimmen Namen beliebig viele Subscriber hören können. Auch möglich ist es, das mehrere Publisher einen Aufruf machen können

Einfach ausgedrückt heiss dies, dass eine Aktion auf einer View mehrere Aktionen auf mehreren verschiedenen Views aufgerufen werden können. Ebenfalls kann eine Aktion auch von mehreren verschiedenen Views aus aufgerufen werden.