我正在构建我的第一个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