ViewModel通信模式



我正在制作一个用关系表进行数据库导航的程序。

例如,你有一个人员类和一个汽车类,当添加一个新人员时,你还需要添加他们驾驶的汽车。因此,您有一个浏览按钮,它可以打开您用于人员的同一窗口,并创建该视图模型的另一个实例。请记住,我的视图模型是通用的,所以它适用于所有类型。

我需要的是在这两个视图模型之间进行通信的模式,这样它就可以在某种程度上返回选定的汽车,如果你知道我的意思的话。

有什么建议吗?

我不能发表评论,所以到此为止。

因此,您有两个ViewModel对象实例,您需要知道每个实例代表的类型,以便将存储在ViewModel通用对象中的对象转换为该类型。

尝试将Type存储在ViewModel中,这样您就可以在ViewModel中将Convert.ChangeType(object, Type)存储到特定类型的任何对象中。

您要查找的内容被称为Mediator模式。

https://en.wikipedia.org/wiki/Mediator_pattern

在Prism和各种MVVM库中,它有时被称为"EventAggregator"。您可以实现各种版本,但基本思想是在中介中注入,VM订阅或发布已知事件。该事件可以传递您需要的任何数据。

这确保了您的虚拟机不会耦合,并允许它们进行通信,并且是可扩展的,因为您可以不断向事件聚合器添加新事件,虚拟机可以根据需要发布/订阅。

最新更新