我有2个ViewModel,都使用MVVM Light的ViewModelBase接口
我有一个视图(这是在另一个视图中创建的标签),它处理登录并将其保存在此成员中
private int loginRights;
然后我希望在其他视图中发送var,以便根据userRights级别创建选项卡。 (这不是一个严格的应用程序,而只是一个学习使用MVVM的项目,因此安全性不是问题) 所以我有这个发送它
loginRights = -1;
MessengerInstance.Send(loginRights);
但是后来我怀疑我应该在收到的ViewModel中编写什么,也可以在发送ViewModels发送新数据后立即执行某些接收类?
我有这个
MessengerInstance.Register<int>(this, success);
private void success(int rights)
{
Console.WriteLine(rights);
}
但是那根本不起作用,但很难找到一些体面的指南
答案 0 :(得分:1)
不确定为什么这对您不起作用,但使用int
作为消息类型是非常糟糕的想法...如果您需要发送{{1具有完全不同含义的值,与登录权限无关?注册int
的所有ViewModel也会收到它,但他们不知道这意味着什么。
您应该为您的消息创建特定的类,以便清楚地识别每种消息。
答案 1 :(得分:0)
我不知道mvvm-light messenger,但我建议您在发送邮件后注册。
如果你有登录实例和另一个vm实例,并且第一个注册和第二个发送消息,则该场景应该有效。
也许你可以提供更多的信息。
编辑: 看到Thomas Levesque的回答,你必须使用相同的信使实例。单身人士或其他人。