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");



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow