我有两个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事件。 怎么能抓住这个事件?
答案 0 :(得分:1)
在MVVMCross中,要在viewmodel之间进行通信,你必须使用Messenger插件:
https://www.mvvmcross.com/documentation/plugins/messenger?scroll=959
基本上在视图模型A上订阅消息,然后在模型B中发送消息,当您想要通知A发生了某些事情时。
答案 1 :(得分:-1)
不熟悉MVVMCross,但大多数MVM模式依赖于Queue在ViewModel之间传递信息。一个简单的Singleton模式,它也暴露像Observer模式之类的事件。然后,您可以在每个之间订阅和发布。
答案 2 :(得分:-1)
看起来有些倒退。你尝试的方式似乎你想要一个依赖注入,但我怀疑你想这样做。但是,您可以将ViewModel A中的事件订阅到ViewModel B中的方法,并以这种方式调用它。