【问题标题】:Communicating between multiple WPF Usercontrols in a grid (MVVM App)在网格中的多个 WPF 用户控件之间进行通信(MVVM 应用程序)
【发布时间】:2011-01-18 04:15:41
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: wpf mvvm user-controls communicate


    【解决方案1】:

    使用消息总线。例如,如果您使用的是MVVM Light Tookit,请使用in-built IMessenger implementation。如果没有,你可以很容易地自己动手。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-26
      • 1970-01-01
      • 2018-07-13
      • 1970-01-01
      • 1970-01-01
      • 2018-11-19
      • 1970-01-01
      相关资源
      最近更新 更多