【发布时间】:2015-06-05 02:22:11
【问题描述】:
我有一个验证用户登录的方法。如果用户正确登录,我想调用两个视图模型构造函数,以防用户登录。下面是我的示例代码。实现这一目标的最佳方法是什么?
发送视图模型:
if (UserName == userName && Password == password)
{
ProjectManager.Instance.IsAdmin = true;
isLoggedIn = true;
IsLoggedIn = true;
ValidLoginImage();
LoginStatus = "Admin Logged In";
MessengerInstance.Send(true);
}
接收视图模型:
private void RegisterForMessages()
{
MessengerInstance.Register<bool>(this, UpdateEnabled);
}
private void UpdateEnabled(bool b)
{
IsLoggedIn = b;
}
registerformessage 方法永远不会被调用。
【问题讨论】:
-
那你为什么不能只做 ViewModel vm=new ViewModel()?
-
@TheodosiusVonRichthhofen 我试过了,似乎 IsLoggedIn 属性在我正在调用的视图模型上发生了变化,这是一个 IsEnabled 用于该新视图模型的 UI 控件确实设置为正确的状态,即true 但未启用 UI 项。
-
基本上我正在做的是单击一个视图然后返回另一个视图然后登录我是否也需要调用该视图来刷新?
-
虽然我不确定你在做什么,但你可以让你的视图模型成为一个静态实例。或使用 MvvmLight Messenger 向更新它的其他视图模型发送消息。 msdn.microsoft.com/en-us/magazine/dn745866.aspx
-
不知道为什么当视图模型已经存在时你试图调用构造函数......
标签: c# wpf mvvm viewmodel mvvm-light