我使用Company
向ViewModel
发送MVVMLightMessenger
。我注册了类似Company
的类型:
public EditCompanyViewModel()
{
Messenger.Default.Register<Company>(this, PassedCompany);
}
这没有任何障碍,PassedCompany
方法被调用,正如我所料。用户离开并编辑Company
。他们点击“保存”,现在我想发送&#39; Company
返回,以便加载到CompaniesView
。这就是我这样做的方式:
private void EditCompany()
{
using (var context = new DashboardContext())
{
var original = context.Companies.FirstOrDefault(c => c.Id == SelectedCompany.Id);
if (original != null)
{
context.Entry(original).CurrentValues.SetValues(SelectedCompany);
if (context.SaveChanges() > 0)
{
Messenger.Default.Unregister<Company>(this);
Messenger.Default.Send(SelectedCompany); // Send the edited Company back to the CompaniesViewModel
OnClosingRequest();
}
}
}
}
这里的问题是,当我通过调试器时,即使我调用Messenger.Default.Unregister
,当我发送修改后的Company
时,再次调用PassedCompany
方法,我想要没有注册但没有发生。
如何确保EditCompanyViewModel
完全取消注册,以便它不会接收返回的修改后的Company
?