Xamarin.Forms
MessagingCenter
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");