2010-08-03 17 views
8

Veo en el paquete MVVM-Light que puedo enviar mensajes con tokens; lo que tengo que hacer es enviar un objeto, con un mensaje adjunto a ese objeto, como Agregar, Editar, Eliminar lo que sea.Cómo usar MVVM-Light con tokens?

¿Cuál es la mejor manera de enviar y recibir este mensaje? Creo que para enviar es simplemente: Messenger.Default.Send (myObject, ActionEnum.DELETE);

Pero en el recibir: Messenger.Default.Register (this, ????, HandleMyMessage);

¿Cuál es la sintaxis correcta?

Gracias!

Respuesta

13

Aquí hay una sección rápida de código tanto para el envío como para el registro. Su Notificación es el mensaje que instruye al receptor sobre cuál fue la intención. El contenido es el artículo que desea enviar, y puede identificar quién envió el mensaje, e incluso a qué objeto se destina este mensaje con el remitente y el destino.

Messenger.Default.Send<NotificationMessage<Job>>(
    new NotificationMessage<Job>(this, myJob, "Add") 
); 

Messenger.Default.Register<NotificationMessage<Job>>(
this, nm => 

{ 
    // this might be a good idea if you have multiple recipients. 
    if (nm.Target != null && 
     nm.Target != this) 
     return; 

    // This is also an option 
    if (nm.Sender != null && 
     nm.Sender != expectedFrom) // expectedFrom is the object whose code called Send 
     return; 

    // Processing the Message 
    switch(nm.Notification) 
    { 
     case "Add": 
      Job receivedJob = nm.Content; 
      // Do something with receivedJob 
      break; 
     case "Delete": 
      Job receivedJob = nm.Content; 
      // Do something with receivedJob 
      break; 
    } 
}); 
14

Solo como una adición: El token no está destinado a identificar una tarea (notificación), sino un receptor. Los receptores que se registran con la misma ficha que el remitente recibirán el mensaje, mientras que los demás receptores no lo recibirán.

Para lo que quiere hacer, utilizo el tipo opcional NotificationMessage incluido en el kit de herramientas. Tiene una propiedad de cadena adicional (Notificación) que puede establecer en cualquier cosa que desee. Lo uso para "dar órdenes" al receptor.

Cheers, Laurent

+0

El testigo puede ser cualquier objeto, no sólo el tipo de receptor correcto? – nportelli

+1

Eso es correcto, el token no está relacionado con el receptor de ninguna manera, es solo un objeto (o un valor como int). Es un identificador, si quieres. – LBugnion

+0

@LBugnion ¿Puede comentar si la respuesta de Ryan es la mejor práctica para este problema? ¿O puedes publicar cómo lo lograrías? Gracias – GONeale

Cuestiones relacionadas