2

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

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

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

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

4

1 回答 1

2

使用消息总线。例如,如果您使用的是MVVM Light Tookit,请使用内置的 IMessenger 实现。如果没有,那么自己动手也很容易。

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

于 2011-01-18T04:19:57.243 回答