MVVM Light Messenger取消注册无法正常工作

时间:2017-08-10 13:53:22

标签: c# wpf mvvm mvvm-light

我使用CompanyViewModel发送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

0 个答案:

没有答案