LOB场景的MVVM建模问题

LOB场景的MVVM建模问题,mvvm,Mvvm,我已经阅读了很多关于MVVM的入门级教程,当然可以看到它的优点,但是我很难将它应用到我的LOB应用程序中。我计划使用MVVM Light,尽管我认为这不会影响我的虚拟机的总体设计结构 假设我想编写一个TaxiDispatcher应用程序,在该应用程序中,我有一个每分钟都会发出的服务,并获取我的每辆出租车的最新状态。我还有一个固定地点的清单,人们可以打电话叫出租车。然后,调度员将为该位置分配一辆可用的出租车。在任何给定的时间,每辆出租车都将可供调度员使用,或被分配到某个特定的地点,以便接送客户 我

我已经阅读了很多关于MVVM的入门级教程,当然可以看到它的优点,但是我很难将它应用到我的LOB应用程序中。我计划使用MVVM Light,尽管我认为这不会影响我的虚拟机的总体设计结构

假设我想编写一个TaxiDispatcher应用程序,在该应用程序中,我有一个每分钟都会发出的服务,并获取我的每辆出租车的最新状态。我还有一个固定地点的清单,人们可以打电话叫出租车。然后,调度员将为该位置分配一辆可用的出租车。在任何给定的时间,每辆出租车都将可供调度员使用,或被分配到某个特定的地点,以便接送客户

我的主屏幕(我们称之为DispatcherView)将由屏幕左侧的可用出租车列表和另外两个可视内容组成:我所在位置的列表(无论是否有人请求服务,哪个出租车已分配到该位置等)和出租车分配列表(分配后经过的时间、位置等)

所有3个视图都来自相同的2个来源:出租车数据服务和我可以派出租车去的位置列表。现在,我为3个视图(UnassignedTaxisVM、DispatchLocationsVM和AssignedTaxisVM)中的每一个都有单独的视图和视图模型,每个都注入了一个或两个数据源。当调度员从未分配列表中分配一个滑行时,我使用Messenger与其他VM通信,让他们知道滑行已分配到某个位置(因此,DispatchLocationsView和AssignedTaxisView都会使用此新信息进行更新).但是,当我连接每个VM时,我必须向每个VM注入相同的数据源,因此必须在每个VM中编写类似的代码,以便在调度器将出租车分配到某个位置时响应命令。这可能是因为我对框架缺乏经验,但对我来说很糟糕

简单地拥有一个VM(DispatcherVM)并让DispatcherView负责呈现所有3个可视内容是否更有意义?我设想这将涉及3个可观察集合(未分配轴、位置、分配轴)在我的DispatcherVM中,绑定每个子视图的数据源。当新数据从我的出租车数据服务传入时,我会解析/更新到适当的ObservableCollection,并让我的视图以这种方式响应


这里的最佳实践是什么?我有3个不同但相似的“视图”相同的基础数据。我应该为每个视图创建单独的虚拟机,还是让一个虚拟机公开一个由3个单独列表/数据网格等组成的视图?

听起来您在视图模型之间有可重用的管道。您考虑过使用继承(例如ViewModelBase类)吗如果继承不适合您的解决方案,您可以选择一个主虚拟机,该虚拟机由主ViewModel协调的子ViewModel组成

在我看来,这两种模式在高层次上都是同样好的解决方案。如果没有大量的上下文,很难知道哪个更合适