Recherche…


Introduction

Xamarin.Forms dispose d'un mécanisme de messagerie intégré pour promouvoir le code découplé. De cette façon, les modèles de vue et les autres composants n'ont pas besoin de se connaître. Ils peuvent communiquer via un simple contrat de messagerie.

Il existe essentiellement deux ingrédients principaux pour utiliser le MessagingCenter .

S'abonner écoutez les messages avec une certaine signature (le contrat) et exécutez le code lorsqu'un message est reçu. Un message peut avoir plusieurs abonnés.

Envoyer ; envoyer un message aux abonnés pour qu'ils agissent.

Exemple simple

Nous verrons ici un exemple simple d'utilisation de MessagingCenter dans Xamarin.Forms.

Tout d'abord, regardons l'abonnement à un message. Dans le modèle FooMessaging , nous sommes abonnés à un message provenant de MainPage . Le message doit être "Hi" et lorsque nous le recevons, nous enregistrons un gestionnaire qui définit la propriété Greeting . Enfin, this signifie que l'instance actuelle de FooMessaging s'enregistre pour ce message.

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

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

Pour envoyer un message déclenchant cette fonctionnalité, nous devons avoir une page appelée MainPage et implémenter le code comme ci-dessous.

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

Dans notre MainPage nous avons un bouton avec un gestionnaire qui envoie un message. this devrait être une instance de MainPage .

Arguments de passage

Vous pouvez également transmettre des arguments avec un message avec lequel travailler.

Nous utiliserons les classifiés de notre exemple précédent et les étendrons. Dans la partie réceptrice, juste derrière l'appel de la méthode Subscribe , ajoutez le type d'argument attendu. Assurez-vous également de déclarer également les arguments dans la signature du gestionnaire.

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

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

Lors de l'envoi d'un message, veillez à inclure la valeur de l'argument. En outre, vous ajoutez ici le type juste derrière la méthode Send et ajoutez la valeur de l'argument.

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

Dans cet exemple, une chaîne simple est utilisée, mais vous pouvez également utiliser tout autre type d'objets (complexes).

Se désabonner

Lorsque vous n'avez plus besoin de recevoir de messages, vous pouvez simplement vous désabonner. Vous pouvez le faire comme ceci:

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

Lorsque vous fournissez des arguments, vous devez vous désabonner de la signature complète, comme ceci:

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



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow