2011-03-18 68 views
1

我有一個WP7應用程序,我想創建一個登錄屏幕,如果用戶還沒有登錄。我有Main.xaml它有一個查看模型MainViewModel.cs。對於登錄或註冊部分,我將它們作爲Grid嵌入到Main.xaml中,但我認爲將它們作爲用戶控件也可以正常工作。登錄和註冊部分將擁有自己的視圖模型,可能與AccountViewModel.cs相同,即Grid或用戶控件將其設置爲DataContextViewModel事件通信

用戶註冊或登錄後,發生在AccountViewModel.cs,什麼是MainViewModel.csMain.xaml知道它是完整的最好的方式,它可以開始加載數據,或做任何需要做什麼?

我最初的想法是使用MVVM Light的消息系統。發生註冊/登錄後,廣播消息已完成,並將MainViewModel.cs註冊到該消息並可以對其執行操作。

有沒有另外一種方法讓Main知道在它的孩子身上發生了什麼?

如果這太難了,我可以添加代碼示例。

回答

2

一個消息傳遞系統,比如MVVM Light中的消息傳遞系統是一種解耦這些動作並以您描述的方式提供通知的好方法。不能說我真的會提倡其他任何事情。 Prism庫提供了一個EventAggregator,它可以做同樣的事情,但是如果您已經在使用MVVM Light,那就堅持使用它。

0

另一種方法是將此類信息(IsLoggedIn)存儲在「全局視圖模型」(例如SettingsViewModel.Instance)中。對於像Settings這樣的全局意義的視圖模型來說,這是一種很有意義的方法,恕我直言。如果您使此屬性引發PropertyChanged事件,則允許您在屬性更改時動態修改UI,並例如平滑地隱藏登錄UI。

歡呼聲, Laurent

相關問題