mvvm light wpf取消注册

时间:2015-04-03 12:37:00

标签: c# wpf mvvm mvvm-light

我对mvvm light有一些问题。使用MVVMLight

例如,我在消息

上的_firstViewModel中注册
FirstViewModel()
{
        Messenger.Default.Register<GrapCommunication>(this, (emp) =>
        {
            if (selectedNumber != null && emp.assetSelector.ContainsKey(selectedNumber))
                S.Points.Add(new DataPoint(DateTime.Now.ToOADate(), emp.assetSelector[selectedNumber].Last_Value));
        });
}

当我打开_secondViewModel时。 _firstViewModel仍然获取数据。我试着做一些像

这样的事情
private void ExecuteSecondViewCommand()
{
    CurrentViewModel = MainViewModel._secondViewModel;
    Messenger.Default.Unregister(_firstViewModel);
}

没有帮助。

1 个答案:

答案 0 :(得分:0)

尝试同时指出对象类型Messenger.Default.Unregister<GrapCommunication>(_firstViewModel)。并确保_firstViewModel与注册该呼叫的 FirstViewModel 的实例相同。

您还可以使用Messenger的令牌参数,这将允许您在同一ViewModel上注册同一对象的多个实例,并为您提供有关注册的一些额外信息。

Messenger.Default.Register<GrapCommunication>(this, "RegistrationDescription",(emp) => {...}

Messenger.Default.Unregister(_firstViewModel, "RegistrationDescription");