mvvm light wpf 注销

mvvm light wpf unregister

我在使用 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);
}

没有帮助。

也尝试指明对象类型Messenger.Default.Unregister<GrapCommunication>(_firstViewModel)。并确保 _firstViewModel 与注册调用的 FirstViewModel 的实例相同。

您还可以使用 Messenger 的 token 参数,这将允许您在同一个 ViewModel 上注册同一个对象的多个实例,并为您提供一些关于注册.

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

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