Xamarin.Forms
MessagingCenter
Suche…
Einführung
Xamarin.Forms verfügt über einen integrierten Messaging-Mechanismus, um entkoppelten Code zu fördern. Auf diese Weise müssen sich Ansichtsmodelle und andere Komponenten nicht kennen. Sie können durch einen einfachen Messaging-Vertrag kommunizieren.
Grundsätzlich gibt es zwei Hauptzutaten für die Verwendung des MessagingCenter
.
Abonnieren Nachrichten mit einer bestimmten Signatur (dem Vertrag) abhören und Code ausführen, wenn eine Nachricht empfangen wird. Eine Nachricht kann mehrere Abonnenten haben.
Senden ; Senden einer Nachricht an die Abonnenten, auf die sie reagieren soll.
Einfaches Beispiel
Hier sehen Sie ein einfaches Beispiel für die Verwendung des MessagingCenters in Xamarin.Forms.
Zuerst werfen wir einen Blick auf das Abonnieren einer Nachricht. Im FooMessaging
Modell abonnieren wir eine Nachricht von der MainPage
. Die Nachricht sollte "Hi" sein und wenn wir sie erhalten, registrieren wir einen Handler, der die Eigenschaft Greeting
festlegt. Schließlich bedeutet this
dass sich die aktuelle FooMessaging
Instanz für diese Nachricht registriert.
public class FooMessaging
{
public string Greeting { get; set; }
public FooMessaging()
{
MessagingCenter.Subscribe<MainPage> (this, "Hi", (sender) => {
this.Greeting = "Hi there!";
});
}
}
Um eine Nachricht senden zu können, die diese Funktionalität auslöst, benötigen wir eine Seite namens MainPage
und implementieren Code wie darunter.
public class MainPage : Page
{
private void OnButtonClick(object sender, EventArgs args)
{
MessagingCenter.Send<MainPage> (this, "Hi");
}
}
In unserer MainPage
wir eine Schaltfläche mit einem Handler, der eine Nachricht sendet. this
sollte eine Instanz von MainPage
.
Argumente übergeben
Sie können auch Argumente mit einer Nachricht übergeben, mit der Sie arbeiten möchten.
Wir werden die Klassifizierung aus unserem vorherigen Beispiel verwenden und sie erweitern. Fügen Sie im Empfangsteil direkt hinter dem Aufruf der Subscribe
Methode den Typ des erwarteten Arguments hinzu. Stellen Sie außerdem sicher, dass Sie auch die Argumente in der Handler-Signatur deklarieren.
public class FooMessaging
{
public string Greeting { get; set; }
public FooMessaging()
{
MessagingCenter.Subscribe<MainPage, string> (this, "Hi", (sender, arg) => {
this.Greeting = arg;
});
}
}
Stellen Sie beim Senden einer Nachricht sicher, dass Sie den Argumentwert angeben. Außerdem fügen Sie hier den Typ direkt hinter der Send
Methode und den Argumentwert hinzu.
public class MainPage : Page
{
private void OnButtonClick(object sender, EventArgs args)
{
MessagingCenter.Send<MainPage, string> (this, "Hi", "Hi there!");
}
}
In diesem Beispiel wird eine einfache Zeichenfolge verwendet. Sie können jedoch auch beliebige andere (komplexe) Objekte verwenden.
Abbestellen
Wenn Sie keine Nachrichten mehr erhalten müssen, können Sie ihn einfach abbestellen. Sie können es so machen:
MessagingCenter.Unsubscribe<MainPage> (this, "Hi");
Wenn Sie Argumente angeben, müssen Sie die vollständige Signatur wie folgt abbestellen:
MessagingCenter.Unsubscribe<MainPage, string> (this, "Hi");