首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ViewModel事件通信

ViewModel事件通信
EN

Stack Overflow用户
提问于 2011-03-19 00:28:00
回答 2查看 316关注 0票数 1

我有一个我正在创建的WP7应用程序,如果用户还没有登录,我希望出现一个登录屏幕。我有一个具有视图模型MainViewModel.csMain.xaml。对于登录或注册部分,我将它们作为Grid嵌入到Main.xaml中,但我认为将它们作为用户控件也可以很好地工作。登录和注册部分将有自己的视图模型,可能两者都有相同的视图模型,AccountViewModel.csGrid或用户控件将其DataContext设置为该视图模型。

在用户注册或登录(在AccountViewModel.cs中发生)之后,让MainViewModel.csMain.xaml知道它已经完成的最佳方式是什么,它可以开始加载数据,或者执行它需要做的任何事情?

我最初的想法是使用MVVM Light的消息传递系统。在注册/登录发生后,广播一条消息表明它已完成,MainViewModel.cs将注册到该消息并可以对其执行操作。

有没有其他方法或者更合适的方法来让Main知道它的子进程中发生了什么?

如果这太难理解了,我可以添加代码示例。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-03-19 00:52:15

消息传递系统,例如MVVM Light中的消息传递系统,是解耦这些类型的操作并以您所描述的方式提供通知的好方法。我真的不能说我会提倡任何其他的东西。Prism库提供了一个EventAggregator,它做同样的事情,但是如果你已经在使用MVVM Light,那么坚持使用它。

票数 2
EN

Stack Overflow用户

发布于 2011-03-19 17:17:04

另一种方法是将这种信息(IsLoggedIn)存储在诸如SettingsViewModel.Instance之类的“全局视图模型”中。对于像Settings这样具有全局意义的视图模型,这是一种非常有意义的方法。如果使此属性引发PropertyChanged事件,则允许您在属性更改时动态修改UI,并平滑地隐藏登录UI。

干杯,Laurent

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5354971

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档