[英]MvvmCross; How to RaisePropertyChange from another ViewModel
[英]How to catch event from another ViewModel in MVVMCross
我有两个ViewModel类,其中一个是主ViewMode(A),另一个是对话框ViewModel(B)。 因此,当我关闭B时,我需要在A中捕获该事件。就像下面的代码一样,我将该事件分配给了B。
public event EventHandler OnSelectEmployee;
public void SelectedEmployee(long employeeId)
{
foreach (EmployeeModel item in Employees)
if (item.id == employeeId)
{
Employee = item;
break;
}
if (OnSelectEmployee != null)
OnSelectEmployee(Employee, EventArgs.Empty);
}
并由A中的此代码打开。
private void AttemptSelectEmployee()
{
ShowViewModel<SelectEmployeeViewModel>(new { key = Customer.id });
}
我需要在A中捕获OnSelectEmployee事件。如何捕获该事件?
在MVVMCross中,要在视图模型之间进行通信,您必须使用Messenger插件:
https://www.mvvmcross.com/documentation/plugins/messenger?scroll=959
基本上,在视图模型A上,您预订一条消息,然后在模型B中,当您想通知A发生某些事情时,发送该消息。
不熟悉MVVMCross,但是大多数MVM模式都依赖Queue在ViewModel之间传递信息。 一个简单的Singleton模式,也可以像Observer模式一样公开事件。 然后,您可以在每个之间进行订阅和发布。
看起来有点倒退。 您正在尝试的方式似乎想要进行依赖项注入,但是我怀疑您想这样做。 但是,您可以将ViewModel A中的Event订阅到ViewModel B中的方法,然后以这种方式调用它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.