我正在使用mvvm light构建Silverlight应用程序。 是否有一段代码片段展示如何从另一个视图模型或用户控件的代码后台访问视图模型的属性或命令?
我猜这很简单,但我可能错过了某些东西。
Ueli
我正在使用mvvm light构建Silverlight应用程序。 是否有一段代码片段展示如何从另一个视图模型或用户控件的代码后台访问视图模型的属性或命令?
我猜这很简单,但我可能错过了某些东西。
Ueli
Messenger.Send<User>(userInstance);
我会把用户发送给任何感兴趣的人。
并在您的CardViewModel中注册一个接收者:
Messenger.Register<User>(this, delegate(User curUser){_curUser = curUser;});
或者你也可以从你的CardViewModel发送一个请求来喊叫用户:
Messenger.Send<String, UserViewModel>("Gimme user");
并在UserViewModel中对此进行反应:
Messenger.Register<String>(this, delegate(String msg)
{
if(msg == "Gimme user")
Messenger.Send<User>(userInstance);
});
(在实际场景中最好使用枚举而不是字符串 :) )
也许你甚至可以直接响应,但我现在无法检查。
只需查看此内容:Mvvm light Messenger
RaisePropertyChanged(() => MyProperty, oldValue, newValue, true);
然后在订阅者中:
Messenger.Default.Register<PropertyChangedMessage<T>>(this, Handler);
T是MyProperty的类型。
祝好 Laurent
从另一个角度看待这个问题是创建一个返回“当前登录用户”的服务。
处理谁已登录的责任本来就更应该由服务承担,而ViewModels保持简单。
ViewModels只应存在于View中。但是,作为良好的开发者,他们也可以像Laurent和CodeWeasel所展示的那样为其他ViewModels提供帮助。