2010-10-16 27 views
0

J'ai un CustomerListViewModel et un OrderListViewModel. Dans ce dernier je sélectionne un ordre pour le supprimer ou j'en crée un nouveau. Dans les deux cas mon CustomerListViewModel et le Messager doit inscrire au type IOrder:Envoyer un IOrder de ViewModel1 à ViewModel2 avec Messenger, comment différencier ADD/DEL?

Messenger.Default.Register<IOrder>(this, AddOrder); 
Messenger.Default.Register<IOrder>(this, DeleteOrder); 

In the OrderListViewModel I do send the customer to be deleted/added: 

Messenger.Default.Send<IOrder>(MyOrderObject); 

Now both Actions AddOrder and DeleteOrder gets surely executed, how can I differentiate ? 
+0

On dirait que c'est à propos de MVVM-Light, n'est-ce pas? Vous voudrez peut-être utiliser cette balise. – Mathias

+0

oui et en raison de la réponse de Simpzon et ma pensée logique, je ne vais pas utiliser Messenger pour le cas ci-dessus. Je vais m'en tenir à mes délégués Action, car le Parent (le Client) connaît les enfants (Ordres) afin qu'ils puissent tirer des données de cette façon. – Elisabeth

+0

Est-ce que je l'ai suggéré? Si oui, ce n'était pas mon intention. Mais si cela vous permet de garder les choses plus simples, pourquoi pas. –

Répondre

0

Le propriétaire ne transmet aucune indication, si elle est d'insérer ou de supprimer. Par conséquent, le récepteur peut seulement deviner ou découvrir par lui-même. Ma suggestion est d'introduire des types de message supplémentaires (IAddOrder, IDeleteOrder), s.t. l'expéditeur a une interface à dire sur le type de changement. Si ce n'est pas possible, vous devrez ajouter des informations dans le IOrder, mais ce serait juste une solution de contournement malodorante, car les données ne sont plus nécessaires après l'échange du message.