Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 使用Messenger将IOrder从ViewModel1发送到ViewModel2,如何区分添加/删除?_Wpf_Communication_Viewmodel_Mediator - Fatal编程技术网

Wpf 使用Messenger将IOrder从ViewModel1发送到ViewModel2,如何区分添加/删除?

Wpf 使用Messenger将IOrder从ViewModel1发送到ViewModel2,如何区分添加/删除?,wpf,communication,viewmodel,mediator,Wpf,Communication,Viewmodel,Mediator,我有一个CustomerListViewModel和一个OrderListViewModel。在后者中,我选择一个订单将其删除,或者创建一个新订单。在这两种情况下,我的CustomerListViewModel和Messenger都必须注册到IOrder类型: Messenger.Default.Register<IOrder>(this, AddOrder); Messenger.Default.Register<IOrder>(this, DeleteOrder);

我有一个CustomerListViewModel和一个OrderListViewModel。在后者中,我选择一个订单将其删除,或者创建一个新订单。在这两种情况下,我的CustomerListViewModel和Messenger都必须注册到IOrder类型:

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 ?
Messenger.Default.Register(这个,AddOrder);
Messenger.Default.Register(此,删除订单);
在OrderListViewModel中,我确实发送了要删除/添加的客户:
Messenger.Default.Send(MyOrderObject);
现在AddOrder和DeleteOrder两个动作都被执行了,我如何区分呢?

如果是插入或删除,则所有者不会发送任何提示。因此,接收者只能自己猜测或发现。 我的建议是引入额外的消息类型(IAddOrder、IDeleteOrder)、s.t。发送者有一个接口来说明更改的类型。
如果不可能,您需要在IOrder中添加一些信息,但这只是一个难闻的解决方法,因为交换消息后不再需要数据。

看起来这是关于MVVM Light的,对吗?您可能想使用该标签。是的,由于Simpzon的回答和我的逻辑思维,我不会在上述情况下使用Messenger。我将坚持我的行动代表,因为家长(客户)知道孩子(订单),所以他们可以这样发送数据。我建议了吗?如果是这样,那不是我的本意。但如果它能让你的事情变得简单,为什么不呢。