嗨,我想通过在UserControls中具有离散的功能单元来扩展我的应用程序,然后将其中几个功能单元放在主页上的ContentControls网格中。我将需要能够在网格中的控件之间进行通信。
我想知道,什么是他们交换数据的最佳方法。该应用程序是MVVM设计,每个用户控件都有自己的ViewModel。主窗体的每个ContentControls“内容”属性都绑定(bind)到主窗体的 View 模型中的一个属性,该模型提供要在该ContentControl中显示的Usercontrol。
例如,假设我需要增强的文件浏览器,因此将其内置到UserControl中。然后,我在另一个UserControl中有一个文件查看器。我希望能够在主窗体的网格中同时显示它们。使用浏览器选择文件时,我希望所选文件可用于Viewer Usercontrol。
我使用此设计,以便可以在应用程序中需要的地方重用每个功能块。我不清楚如何最好地在它们之间传输数据,因为在我的设计中它们并不相互了解。有什么建议吗?谢谢!
最佳答案
使用消息总线。例如,如果您使用的是MVVM Light Tookit,请使用in-built IMessenger implementation。如果没有,那么自己动手就很容易了。
一旦有了消息总线,就可以在一个ViewModel中注册消息,并从另一个ViewModel发布消息。这是在ViewModels之间进行一对一或“广播”通信的简单方法。
关于wpf - 在网格中的多个WPF用户控件之间进行通信(MVVM App),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4720435/