Ricerca…


introduzione

Xamarin.Forms ha un meccanismo di messaggistica integrato per promuovere il codice disaccoppiato. In questo modo, non è necessario conoscere i modelli e gli altri componenti. Possono comunicare con un semplice contratto di messaggistica.

Ci sono fondamentalmente due ingredienti principali per l'utilizzo di MessagingCenter .

Iscriviti ; ascoltare i messaggi con una certa firma (il contratto) ed eseguire il codice quando viene ricevuto un messaggio. Un messaggio può avere più abbonati.

Invia ; inviare un messaggio per gli abbonati su cui agire.

Semplice esempio

Qui vedremo un semplice esempio di utilizzo di MessagingCenter in Xamarin.Forms.

Innanzitutto, diamo un'occhiata all'iscrizione a un messaggio. Nel modello FooMessaging sottoscriviamo un messaggio proveniente da MainPage . Il messaggio dovrebbe essere "Ciao" e quando lo riceveremo, registriamo un gestore che imposta la proprietà Greeting . Infine, this significa che l'istanza attuale di FooMessaging sta registrando per questo messaggio.

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

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

Per inviare un messaggio che attiva questa funzionalità, dobbiamo avere una pagina chiamata MainPage e implementare il codice come sotto.

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

Nella nostra MainPage abbiamo un pulsante con un gestore che invia un messaggio. this dovrebbe essere un'istanza di MainPage .

Passando argomenti

È anche possibile passare argomenti con un messaggio con cui lavorare.

Useremo le classi del nostro esempio precedente e le estenderemo. Nella parte ricevente, subito dietro la chiamata al metodo Subscribe , aggiungi il tipo di argomento che ti aspetti. Assicurati inoltre di dichiarare gli argomenti nella firma del gestore.

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

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

Quando invii un messaggio, assicurati di includere il valore dell'argomento. Inoltre, qui aggiungi il tipo subito dopo il metodo Send e aggiungi il valore dell'argomento.

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

In questo esempio viene utilizzata una stringa semplice, ma è anche possibile utilizzare qualsiasi altro tipo di oggetti (complessi).

Cancellazione, cancellami

Quando non hai più bisogno di ricevere messaggi, puoi semplicemente annullare l'iscrizione. Puoi farlo in questo modo:

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

Quando stai fornendo argomenti, devi annullare l'iscrizione alla firma completa, come questa:

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



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow