我正在構建我的第一個WPF和MVVM應用程序。我有3次(用3周對應的ViewModels)如何在ViewModels之間進行通信?
1)主窗口(窗口)
2)ViewClients(用戶控件)
3)ViewModClient(用戶控件)
在客戶端ViewModel我有一個屬性SelectedClient跟蹤視圖中的DataGrid上選定的客戶端。在這個視圖中,我也有一個與在MainWindow ViewModel中定義的ICommand相關的按鈕。 我這個結合解決它:
Command="{Binding Path=DataContext.CreateViewsCommand, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}}" CommandParameter={x:Type local:ViewModClient}
我用CommandParameter告訴主窗口視圖模型樣的看法,以建立和保持從知識觀隔離視圖模型其中。這很好。
現在的問題:
在ModClient視圖模型我需要加載客戶端的數據。那麼我如何將這與Clients View中的SelectedClient相關聯,同時保持MVVM模式呢? (我只能使用一個CommandParameter並且已經使用它)
也許使用某種形式的EventAggregator?您可以從ViewClients VM引發事件並在ViewModClient VM中訂閱它。 –
謝謝你的回答。你能給我一些示例代碼嗎?也許你可以發佈它像一個建議的答案。 – ericpap
查看MVVM Light Toolkit,它具有內置的消息傳遞支持https://mvvmlight.codeplex.com/ – reggaeguitar