Sök…


Introduktion

Xamarin.Forms har en inbyggd meddelandemekanism för att främja avkopplad kod. På detta sätt behöver visningsmodeller och andra komponenter inte känna varandra. De kan kommunicera med ett enkelt meddelandekontrakt.

Det finns i princip två huvudingredienser för att använda MessagingCenter .

Prenumerera ; lyssna efter meddelanden med en viss signatur (kontraktet) och köra kod när ett meddelande tas emot. Ett meddelande kan ha flera prenumeranter.

Skicka ; skicka ett meddelande för prenumeranter att agera på.

Enkelt exempel

Här ser vi ett enkelt exempel på att använda MessagingCenter i Xamarin.Forms.

Låt oss först titta på prenumerationen på ett meddelande. I FooMessaging modellen prenumererar vi ett meddelande från MainPage . Meddelandet ska vara "Hej" och när vi får det registrerar vi en hanterare som ställer in fastigheten Greeting . Slutligen this innebär det aktuella FooMessaging instans registrerar för detta meddelande.

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

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

För att skicka ett meddelande som utlöser denna funktionalitet, måste vi ha en sida som heter MainPage och implementera kod som under.

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

På vår MainPage vi en knapp med en hanterare som skickar ett meddelande. this bör vara ett exempel på MainPage .

Skickar argument

Du kan också skicka argument med ett meddelande att arbeta med.

Vi kommer att använda klassade från vårt tidigare exempel och utöka dem. I den mottagande delen, precis bakom Subscribe , lägg till typen av argument du förväntar dig. Se också till att du också förklarar argumenten i hanterarens signatur.

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

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

När du skickar ett meddelande, se till att inkludera argumentvärdet. Här lägger du till typen direkt bakom Send metoden och lägger till argumentvärdet.

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

I det här exemplet används en enkel sträng, men du kan också använda alla andra typer av (komplexa) objekt.

Gå ur

När du inte längre behöver ta emot meddelanden kan du helt enkelt avsluta prenumerationen. Du kan göra det så här:

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

När du tillhandahåller argument måste du avsluta prenumerationen på hela signaturen, så här:

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



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow