我有一个具有“任务”选项卡和“项目”选项卡的应用程序。我决定为每个选项卡TasksViewModel和ProjectsViewModel创建一个单独的ViewModel。
“任务”选项卡具有一个新任务区域,具有相关的项目下拉菜单,“项目”选项卡(显然)具有项目列表。
我想要的是“任务”选项卡上的下拉列表与“项目”选项卡列表共享相同的集合,这样,每当我在“项目”选项卡上添加或删除项目时,“任务”选项卡上的列表都会自动更新。单个ViewModel可以很好地工作,但是开始变得非常不规则。
我是否应该拆分为两个ViewModel?是否有共享数据的通用方法?也许将相同的内容传递给ObservableCollection<Project>每个ViewModels?可能有一些类型的通知返回到TasksViewModel,类似于ICollectionChanged。
感谢任何见识/投入!
这里最简单的解决方案通常是使用某种形式的Messaging Service在两个ViewModel之间传递信息。
例如,MVVM Light工具包为这种情况提供了IMessenger界面。
使用良好的IoC或DI工具集也可以在这种情况下提供帮助。这样一来,您就可以将项目集合动态注入到两个ViewModel中,从而可以在两个视图中使用共享集合。