我有一个我正在创建的WP7应用程序,如果用户还没有登录,我希望出现一个登录屏幕。我有一个具有视图模型MainViewModel.cs的Main.xaml。对于登录或注册部分,我将它们作为Grid嵌入到Main.xaml中,但我认为将它们作为用户控件也可以很好地工作。登录和注册部分将有自己的视图模型,可能两者都有相同的视图模型,AccountViewModel.cs,Grid或用户控件将其DataContext设置为该视图模型。
在用户注册或登录(在AccountViewModel.cs中发生)之后,让MainViewModel.cs或Main.xaml知道它已经完成的最佳方式是什么,它可以开始加载数据,或者执行它需要做的任何事情?
我最初的想法是使用MVVM Light的消息传递系统。在注册/登录发生后,广播一条消息表明它已完成,MainViewModel.cs将注册到该消息并可以对其执行操作。
有没有其他方法或者更合适的方法来让Main知道它的子进程中发生了什么?
如果这太难理解了,我可以添加代码示例。
发布于 2011-03-19 00:52:15
消息传递系统,例如MVVM Light中的消息传递系统,是解耦这些类型的操作并以您所描述的方式提供通知的好方法。我真的不能说我会提倡任何其他的东西。Prism库提供了一个EventAggregator,它做同样的事情,但是如果你已经在使用MVVM Light,那么坚持使用它。
发布于 2011-03-19 17:17:04
另一种方法是将这种信息(IsLoggedIn)存储在诸如SettingsViewModel.Instance之类的“全局视图模型”中。对于像Settings这样具有全局意义的视图模型,这是一种非常有意义的方法。如果使此属性引发PropertyChanged事件,则允许您在属性更改时动态修改UI,并平滑地隐藏登录UI。
干杯,Laurent
https://stackoverflow.com/questions/5354971
复制相似问题