Buscar..


Introducción

Xamarin.Forms tiene un mecanismo de mensajería incorporado para promover el código desacoplado. De esta manera, los modelos de visualización y otros componentes no necesitan conocerse entre sí. Pueden comunicarse por un simple contrato de mensajería.

Hay básicamente dos ingredientes principales para usar el MessagingCenter .

Suscribir escuche los mensajes con cierta firma (el contrato) y ejecute el código cuando reciba un mensaje. Un mensaje puede tener múltiples suscriptores.

Enviar enviando un mensaje para que los suscriptores actúen.

Ejemplo simple

Aquí veremos un ejemplo simple del uso de MessagingCenter en Xamarin.Forms.

Primero, echemos un vistazo a la suscripción a un mensaje. En el modelo FooMessaging nos suscribimos a un mensaje que viene de la MainPage . El mensaje debe ser "Hola" y cuando lo recibimos, registramos un controlador que establece la propiedad Greeting . Por último, this significa que la instancia actual de FooMessaging está registrando para este mensaje.

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

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

Para enviar un mensaje que active esta funcionalidad, necesitamos tener una página llamada MainPage e implementar un código como el de abajo.

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

En nuestra MainPage tenemos un botón con un controlador que envía un mensaje. this debería ser una instancia de MainPage .

Pasando argumentos

También puede pasar argumentos con un mensaje para trabajar.

Usaremos las clasificadas de nuestro ejemplo anterior y las ampliaremos. En la parte receptora, justo detrás de la llamada al método Subscribe , agregue el tipo de argumento que espera. Asegúrese también de declarar los argumentos en la firma del controlador.

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

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

Al enviar un mensaje, asegúrese de incluir el valor del argumento. Además, aquí agrega el tipo justo detrás del método de Send y agrega el valor del argumento.

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

En este ejemplo, se utiliza una cadena simple, pero también puede usar cualquier otro tipo de objetos (complejos).

Darse de baja

Cuando ya no necesite recibir mensajes, simplemente puede darse de baja. Puedes hacerlo así:

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

Cuando está proporcionando argumentos, debe darse de baja de la firma completa, como esto:

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



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow