网格中多个WPF用户控件之间的通信(MVVM应用程序)

网格中多个WPF用户控件之间的通信(MVVM应用程序),wpf,mvvm,user-controls,communicate,Wpf,Mvvm,User Controls,Communicate,您好,我希望通过在UserControls中使用离散的功能单元来扩展我的应用程序,然后将其中的几个功能单元放在我主页上的ContentControls网格中。我需要能够在网格中的控件之间进行通信 我想知道,他们交换数据的最佳方式是什么。该应用程序是一个MVVM设计,每个Usercontrol都有自己的ViewModel。主窗体的每个ContentControls“Content”属性都绑定到主窗体的viewmodel中的一个属性,该属性提供要在该ContentControl中显示的Usercon

您好,我希望通过在UserControls中使用离散的功能单元来扩展我的应用程序,然后将其中的几个功能单元放在我主页上的ContentControls网格中。我需要能够在网格中的控件之间进行通信

我想知道,他们交换数据的最佳方式是什么。该应用程序是一个MVVM设计,每个Usercontrol都有自己的ViewModel。主窗体的每个ContentControls“Content”属性都绑定到主窗体的viewmodel中的一个属性,该属性提供要在该ContentControl中显示的Usercontrol

例如,假设我想要一个增强的文件浏览器,所以我将它构建到一个UserControl中。然后在另一个用户控件中有一个文件查看器。我希望能够在主窗体的网格中同时显示它们。使用浏览器选择文件时,我希望查看器用户控件可以使用所选文件


我使用了这种设计,这样我就可以在应用程序中需要的任何地方重用每个功能块。我不清楚如何最好地在它们之间传输数据,因为在我的设计中,它们彼此都不知道。有什么建议吗?谢谢

使用消息总线。例如,如果您正在使用,请使用。如果不是的话,你可以很容易地推出自己的

拥有消息总线后,可以在一个ViewModel中注册消息,并发布另一个ViewModel中的消息。这是跨ViewModels进行通信(一对一或以“广播”方式)的一种简单方式