我正在创建一个WP7应用程序,如果用户尚未登录,我希望显示登录屏幕。我的Main.xaml
有一个视图模型MainViewModel.cs
。对于登录或注册部分,我将它们嵌入Grid
作为Main.xaml
,但我认为将它们作为用户控件也可以正常工作。登录和注册部分将拥有自己的视图模型,可能与AccountViewModel.cs
相同,Grid
或用户控件将其DataContext
设置为。{/ p>
用户注册或登录后发生在AccountViewModel.cs
,MainViewModel.cs
或Main.xaml
知道它已完成的最佳方式是什么,它可以开始加载数据,或做任何需要做的事情?
我最初的想法是使用MVVM Light的消息系统。注册/登录发生后,广播一条消息,表明它已完成,MainViewModel.cs
将注册到该消息并可以对其进行操作。
是否有另一种方式或更正确的方式让Main
知道其中的某个孩子已经发生了什么?
如果这太难遵循,我可以添加代码示例。
答案 0 :(得分:2)
消息传递系统(例如MVVM Light中的消息传递系统)是一种很好的方式来解耦这些操作并以您描述的方式提供通知。不能说我真的提倡别的。 Prism库提供EventAggregator
,它做同样的事情,但是如果你已经在使用MVVM Light,那么坚持下去。
答案 1 :(得分:0)
另一种方法是将这种信息(IsLoggedIn)存储在“全局视图模型”中,例如SettingsViewModel.Instance。对于像“设置”这样的全局意义的视图模型,这是一种很有意义的方法恕我直言。如果您使此属性引发PropertyChanged事件,则允许您在属性更改时动态修改UI,并例如平滑地隐藏登录UI。
欢呼声, 劳伦