Zoeken…


Invoering

Xamarin.Forms heeft een ingebouwd berichtmechanisme om ontkoppelde code te promoten. Op deze manier hoeven weergavemodellen en andere componenten elkaar niet te kennen. Ze kunnen communiceren via een eenvoudig berichtencontract.

Er zijn in principe twee hoofdingrediënten voor het gebruik van het MessagingCenter .

Abonneer u ; luister naar berichten met een bepaalde handtekening (het contract) en voer code uit wanneer een bericht wordt ontvangen. Een bericht kan meerdere abonnees hebben.

Verzenden ; een bericht verzenden waar abonnees naar kunnen handelen.

Eenvoudig voorbeeld

Hier zien we een eenvoudig voorbeeld van het gebruik van het MessagingCenter in Xamarin.Forms.

Laten we eerst eens kijken naar het abonneren op een bericht. In het FooMessaging model abonneren we ons op een bericht van de MainPage . Het bericht moet "Hallo" zijn en wanneer we het ontvangen, registreren we een handler die de eigenschap Greeting instelt. Ten slotte betekent this dat de huidige FooMessaging instantie zich registreert voor dit bericht.

public class FooMessaging
{
    public string Greeting { get; set; }

    public FooMessaging()
    {
        MessagingCenter.Subscribe<MainPage> (this, "Hi", (sender) => {
            this.Greeting = "Hi there!";
        });
    }
}

Om een bericht te verzenden dat deze functionaliteit activeert, hebben we een pagina met de naam MainPage en moeten we code implementeren zoals hieronder.

public class MainPage : Page
{
    private void OnButtonClick(object sender, EventArgs args)
    {
        MessagingCenter.Send<MainPage> (this, "Hi");
    }
}

In onze MainPage hebben we een knop met een handler die een bericht verzendt. this zou een instantie van MainPage .

Argumenten doorgeven

U kunt ook argumenten doorgeven met een bericht om mee te werken.

We zullen de classed uit ons vorige voorbeeld gebruiken en ze uitbreiden. Voeg in het ontvangende gedeelte, direct achter de aanroep van de methode Subscribe , het type argument toe dat u verwacht. Zorg er ook voor dat u ook de argumenten in de handtekening van de handler opgeeft.

public class FooMessaging
{
    public string Greeting { get; set; }

    public FooMessaging()
    {
        MessagingCenter.Subscribe<MainPage, string> (this, "Hi", (sender, arg) => {
            this.Greeting = arg;
        });
    }
}

Let er bij het verzenden van een bericht op dat u de argumentwaarde opneemt. Ook hier kunt u het type toe te voegen direct achter het Send en voeg het argument waarde.

public class MainPage : Page
{
    private void OnButtonClick(object sender, EventArgs args)
    {
        MessagingCenter.Send<MainPage, string> (this, "Hi", "Hi there!");
    }
}

In dit voorbeeld wordt een eenvoudige string gebruikt, maar u kunt ook elk ander type (complexe) objecten gebruiken.

Afmelden

Wanneer u geen berichten meer hoeft te ontvangen, kunt u zich eenvoudig afmelden. Je kunt het zo doen:

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

Wanneer u argumenten aanlevert, moet u zich als volgt uitschrijven voor de volledige handtekening:

MessagingCenter.Unsubscribe<MainPage, string> (this, "Hi");



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow