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

时间:2011-01-18 04:15:42

标签: wpf mvvm user-controls communicate

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

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

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

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

1 个答案:

答案 0 :(得分:2)

使用消息总线。例如,如果您使用MVVM Light Tookit,请使用in-built IMessenger implementation。如果没有,那么推出自己的相当容易。

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