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

问题描述 投票:0回答:1

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

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

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

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

wpf mvvm user-controls
1个回答
2
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.