隨着我繼續適應wpf和mvvm的新世界,我發現自己遇到了另一個被證明有點麻煩的問題。將參數從一個視圖模型傳遞到另一個視圖模型wpf
在Windows窗體中,如果我需要一個新窗體來獲取參數,我只需將該窗體的構造函數所需的信息傳遞給我。由於Winforms基本上是模型背後的代碼,所以這不是問題。
我現在發現自己有一個MainWindow(由MainWindowViewModel控制)和一個Login(由LoginViewModel控制),它首先顯示爲一個對話框。我已經排序了缺少對話框結果的問題,並且可以在關閉登錄對話框後顯示主窗口。
登錄對話框在應用程序啓動時顯示並響應以下代碼;
dim dlg As New Login
If dlg.ShowDialog() = True Then
Else
Current.Shutdown(0)
End If
和我使用用在登錄窗口的後面的代碼,以表示登錄對話框關閉時主窗口的護理以下;
Public Sub New
' This call is required by the designer.
InitializeComponent()
' Add any initialization after the InitializeComponent() call.
Application.Current.ShutdownMode =ShutdownMode.OnExplicitShutdown
End Sub
Protected Overrides Sub OnClosed(e As EventArgs)
MyBase.OnClosed(e)
Application.Current.ShutdownMode = ShutdownMode.OnMainWindowClose
End Sub
現在的主窗口已經知道它的DataContext的是MainWindoViewModel因爲我與混合設計時就設定了,讓我怎麼過,我想從LoginViewModel到MainWindowViewModel傳遞任何參數?
我可以閱讀c#,但如果可能的話會更喜歡vb。我知道這是我想要經常做的事情,所以如果有一種通用的方式來做到這一點,那麼這就是我想要去的方式。
由於
通常情況下,您會使用某種消息傳遞系統在不相關的ViewModel之間傳遞數據,但是在您使用Login和Main ViewModels的情況下,直到登錄成功後纔會創建MainViewModel,並且通過它它在構造函數中需要的數據。如果你有興趣,我有一個例子[這裏](http://stackoverflow.com/a/12861797/302677)。 – Rachel 2014-10-28 15:34:08